package Ġcom . c act ust e am . money . data . io Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġandroid . support . v 4 . util . Array Map Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . c act ust e am . money . app . Money App Ċ import Ġcom . c act ust e am . money . data . DataManager Ċ import Ġcom . c act ust e am . money . data . currency . MC urrency Ċ import Ġcom . c act ust e am . money . data . dao . Transaction Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ@ author Ġv pot ap enko Ċ Ġ*/ Ċ class ĠMy Money Db Importer Ġ: ĠBase Importer () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcategories : ĠMap < Long , ĠString >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġaccounts : ĠMap < Long , ĠString >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġc urrencies : ĠMap < Long , ĠMy Money Currency >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġanaly se ( source File : ĠFile , Ġlistener : Ġ( progress : ĠInt , Ġmax : ĠInt ) Ġ-> ĠUnit , Ġdata Manager : ĠData Manager ): ĠImport Schema Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Schema Ġ= ĠImport Schema () ĊĠĠĠĠĠĠĠ Ġthis . data Manager Ġ= Ġdata Manager ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠSQLite Database . open Database ( source File . path , Ġnull , ĠSQLite Database . OPEN _ READ ONLY ) ĊĠĠĠĠĠĠĠ Ġload Structure ( db ) ĊĊĠĠĠĠĠĠĠ Ġcurrent Schema !!. lines Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġanaly se Outside Transactions ( db ) ĊĠĠĠĠĠĠĠ Ġanaly se Moving ( db ) ĊĠĠĠĠĠĠĠ Ġanaly se Exchange ( db ) ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Schema !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Structure ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcategories Ġ= Ġload Categories ( db ) ĊĠĠĠĠĠĠĠ Ġaccounts Ġ= Ġload Accounts ( db ) ĊĠĠĠĠĠĠĠ Ġc urrencies Ġ= Ġload C urrencies ( db ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanaly se Exchange ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġob men ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Account ( accountId , Ġval Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Account ( accountId , Ġval Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. bad Lines Count Ġ= Ġcurrent Schema !!. bad Lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. lines Count Ġ= Ġcurrent Schema !!. lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanaly se Moving ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġmoving ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Account ( accountId , Ġval Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Account ( accountId , Ġval Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. bad Lines Count Ġ= Ġcurrent Schema !!. bad Lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. lines Count Ġ= Ġcurrent Schema !!. lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanaly se Outside Transactions ( db : ĠSQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġr ash odi ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Account ( accountId , Ġval Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġcursor . getInt ( cursor . getColumnIndex (" key ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcat Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ cat ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Name Ġ= Ġcategories ! ![ cat Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Category ( category Name !! , Ġtype Ġ== Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Cat Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ pod Cat ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sub Cat Id Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub category Name Ġ= Ġcategories ! ![ sub Cat Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanaly se Sub category ( category Name , Ġsub category Name !! , Ġtype Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. bad Lines Count Ġ= Ġcurrent Schema !!. bad Lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. lines Count Ġ= Ġcurrent Schema !!. lines Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanaly se Account ( accountId : ĠLong , Ġval Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount Name Ġ= Ġaccounts ! ![ accountId ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġc urrencies ! ![ val Id ] ĊĊĠĠĠĠĠĠĠ Ġval Ġnew AccountName Ġ= Ġaccount Name Ġ+ Ġ"_" Ġ+ Ġcurrency !!. name ĊĠĠĠĠĠĠĠ Ġvar Ġimport Account Ġ= Ġcurrent Schema !!. get Account ( new AccountName , Ġcurrency . currency Code ) ĊĠĠĠĠĠĠĠ Ġif Ġ( import Account Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Account Ġ= ĠImport Account ( new AccountName , Ġcurrency . currency Code , ĠNew Account Import Strategy ( new AccountName )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Schema !!. put Account ( new AccountName , Ġcurrency . currency Code , Ġimport Account ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Accounts ( db : ĠSQLite Database ): ĠMap < Long , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġsche t ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġval Ġaccounts Ġ= ĠArray Map < Long , ĠString >() ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( cursor . getColumnIndex ("_ id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Name Ġ= Ġcursor . getString ( cursor . getColumnIndex (" name ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccounts . put ( id , Ġaccount Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġaccounts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload C urrencies ( db : ĠSQLite Database ): ĠMap < Long , ĠMy Money Currency > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġval uta ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġval Ġc urrencies Ġ= ĠArray Map < Long , ĠMy Money Currency >() ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( cursor . getColumnIndex ("_ id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcursor . getString ( cursor . getColumnIndex (" name ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrency Code Ġ= Ġdetect Currency Code ( name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġc urrencies . put ( id , ĠMy Money Currency ( name , Ġcurrency Code )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġc urrencies ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetect Currency Code ( name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmoney App Ġ= ĠMoney App . instance ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Manager Ġ= Ġmoney App . currency Manager ĊĠĠĠĠĠĠĠ Ġvar Ġcurrency : ĠM Currency ? Ġ= Ġcurrency Manager . find Currency By Code ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( currency Ġ!= Ġnull ) Ġreturn Ġcurrency . currency Code ĊĊĠĠĠĠĠĠĠ Ġcurrency Ġ= Ġcurrency Manager . find Currency ByName ( name ) ĊĠĠĠĠĠĠĠ Ġif Ġ( currency Ġ!= Ġnull ) Ġreturn Ġcurrency . currency Code ĊĊĠĠĠĠĠĠĠ Ġif Ġ(" $" Ġ== Ġname ) Ġreturn Ġ" USD " ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmoney App . app Preferences . main Currency Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Categories ( db : ĠSQLite Database ): ĠMap < Long , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġcategory ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= ĠArray Map < Long , ĠString >() ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( cursor . getColumnIndex ("_ id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategory Name Ġ= Ġcursor . getString ( cursor . getColumnIndex (" name ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategories . put ( id , Ġcategory Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġcategories ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Import ( schema : ĠImport Schema , Ġsource File : ĠFile , Ġlistener : Ġ( progress : ĠInt , Ġmax : ĠInt ) Ġ-> ĠUnit , Ġdata Manager : ĠData Manager ): ĠImport Result Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Schema Ġ= Ġschema ĊĠĠĠĠĠĠĠ Ġthis . data Manager Ġ= Ġdata Manager ĊĊĠĠĠĠĠĠĠ Ġimport Result Ġ= ĠImport Result () ĊĊĠĠĠĠĠĠĠ Ġlistener ( 0 , Ġcurrent Schema !!. lines Count ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠSQLite Database . open Database ( source File . path , Ġnull , ĠSQLite Database . OPEN _ READ ONLY ) ĊĠĠĠĠĠĠĠ Ġload Structure ( db ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġr ash odi ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Outside Transaction ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Result !!. new Transactions Ġ= Ġimport Result !!. new Transactions Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Import Exception ( e , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ% Ġ 1 0 Ġ== Ġ 0 ) Ġlistener ( count , Ġcurrent Schema !!. lines Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġmoving ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Moving Transaction ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Result !!. new Transactions Ġ= Ġimport Result !!. new Transactions Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Import Exception ( e , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ% Ġ 1 0 Ġ== Ġ 0 ) Ġlistener ( count , Ġcurrent Schema !!. lines Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġcursor Ġ= Ġdb . raw Query (" SELECT Ġ* Ġfrom Ġob men ", ĠarrayOf < String >()) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Exchange Transaction ( cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Result !!. new Transactions Ġ= Ġimport Result !!. new Transactions Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Import Exception ( e , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ% Ġ 1 0 Ġ== Ġ 0 ) Ġlistener ( count , Ġcurrent Schema !!. lines Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcursor . close () ĊĊĠĠĠĠĠĠĠ Ġdb . close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġimport Result !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport Exchange Transaction ( cursor : ĠCursor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġdata Manager !!. transaction Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Transaction Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Type ( Transaction . TRANSFER ) ĊĊĠĠĠĠĠĠĠ Ġval ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t ")) ĊĠĠĠĠĠĠĠ Ġvar Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val 2 ")) ĊĠĠĠĠĠĠĠ Ġb . put Source AccountId ( get AccountId ( accountId , Ġval Id )) ĊĊĠĠĠĠĠĠĠ Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val 1 ")) ĊĠĠĠĠĠĠĠ Ġb . put Dest AccountId ( get AccountId ( accountId , Ġval Id )) ĊĊĠĠĠĠĠĠĠ Ġvar Ġamount Ġ= Ġcursor . getDouble ( cursor . getColumnIndex (" sum ma 2 ")) ĊĠĠĠĠĠĠĠ Ġb . put Amount ( amount ) ĊĊĠĠĠĠĠĠĠ Ġamount Ġ= Ġcursor . getDouble ( cursor . getColumnIndex (" sum ma 1 ")) ĊĠĠĠĠĠĠĠ Ġb . put Dest Amount ( amount ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" date ")) ĊĠĠĠĠĠĠĠ Ġb . put Date ( Date ( time )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġcursor . getString ( cursor . getColumnIndex (" op is ")) ĊĠĠĠĠĠĠĠ Ġif Ġ(! description . isNull Or Blank ()) Ġb . put Comment ( description ) ĊĊĠĠĠĠĠĠĠ Ġb . create Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport Moving Transaction ( cursor : ĠCursor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġdata Manager !!. transaction Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Transaction Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Type ( Transaction . TRANSFER ) ĊĊĠĠĠĠĠĠĠ Ġvar ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t 1 ")) ĊĠĠĠĠĠĠĠ Ġval Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val ")) ĊĠĠĠĠĠĠĠ Ġb . put Source AccountId ( get AccountId ( accountId , Ġval Id )) ĊĊĠĠĠĠĠĠĠ ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t 2 ")) ĊĠĠĠĠĠĠĠ Ġb . put Dest AccountId ( get AccountId ( accountId , Ġval Id )) ĊĊĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġcursor . getDouble ( cursor . getColumnIndex (" sum ma ")) ĊĠĠĠĠĠĠĠ Ġb . put Amount ( amount ). put Dest Amount ( amount ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" date ")) ĊĠĠĠĠĠĠĠ Ġb . put Date ( Date ( time )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġcursor . getString ( cursor . getColumnIndex (" op is ")) ĊĠĠĠĠĠĠĠ Ġif Ġ(! description . isNull Or Blank ()) Ġb . put Comment ( description ) ĊĊĠĠĠĠĠĠĠ Ġb . create Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġimport Outside Transaction ( cursor : ĠCursor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġdata Manager !!. transaction Service . new Transaction Builder () ĊĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġcursor . getInt ( cursor . getColumnIndex (" key ")) ĊĠĠĠĠĠĠĠ Ġb . put Type ( if Ġ( type Ġ== Ġ 0 ) ĠTransaction . EXP ENSE Ġelse ĠTransaction . IN CO ME ) ĊĊĠĠĠĠĠĠĠ Ġval ĠaccountId Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ sche t ")) ĊĠĠĠĠĠĠĠ Ġval Ġval Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ val ")) ĊĠĠĠĠĠĠĠ Ġb . put Source AccountId ( get AccountId ( accountId , Ġval Id )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcat Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ cat ")) ĊĠĠĠĠĠĠĠ Ġval Ġcategory Name Ġ= Ġcategories ! ![ cat Id ] ĊĠĠĠĠĠĠĠ Ġb . put CategoryId ( get CategoryId ( category Name !! , Ġtype Ġ== Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub Cat Id Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" id _ pod Cat ")) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub Cat Id Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub category Name Ġ= Ġcategories ! ![ sub Cat Id ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb . put Sub categoryId ( getSub categoryId ( category Name , Ġsub category Name !! , Ġtype Ġ== Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġcursor . getDouble ( cursor . getColumnIndex (" sum ma ")) ĊĠĠĠĠĠĠĠ Ġb . put Amount ( amount ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġcursor . getLong ( cursor . getColumnIndex (" date ")) ĊĠĠĠĠĠĠĠ Ġb . put Date ( Date ( time )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġcursor . getString ( cursor . getColumnIndex (" op is ")) ĊĠĠĠĠĠĠĠ Ġif Ġ(! description . isNull Or Blank ()) Ġb . put Comment ( description ) ĊĊĠĠĠĠĠĠĠ Ġb . create Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget AccountId ( accountId : ĠLong , Ġval Id : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccount Name Ġ= Ġaccounts ! ![ accountId ] ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Ġ= Ġc urrencies ! ![ val Id ] ĊĊĠĠĠĠĠĠĠ Ġval Ġnew AccountName Ġ= Ġaccount Name Ġ+ Ġ"_" Ġ+ Ġcurrency !!. name ĊĠĠĠĠĠĠĠ Ġreturn Ġget AccountId ( new AccountName , Ġcurrency . currency Code ) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMy Money Currency ( val Ġname : ĠString , Ġval Ġcurrency Code : ĠString ) Ċ } Ċ