/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠStan isl aw Ġst as bar ĠBar ans ki Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ__ ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ__ Ċ Ġ* ĠĠĠ Ġ__ ___ / Ġ/ _____ Ġ__ ____ / Ġ/ _ Ġ Ġ____ Ġ__ ____ Ċ Ġ* ĠĠ Ġ/ Ġ___ / Ġ__ / Ġ__ Ġ`/ Ġ___ / Ġ__ Ġ\/ Ġ__ Ġ`/ Ġ___ / Ċ Ġ* Ġ Ġ(__ Ġ Ġ) Ġ/ _/ Ġ/ _/ Ġ(__ Ġ Ġ) Ġ/ _/ Ġ/ Ġ/ _/ Ġ/ Ġ/ Ċ Ġ* Ġ/ ____ /\ __/ \ __, _/ ____ / _. ___ /\ __, _ /_ / Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠ Ġtax ledger @ st as bar . com Ċ Ġ*/ Ċ Ċ package Ġcom . st as bar . tax ledger . writ ers Ċ Ċ import Ġcom . st as bar . tax ledger . Logger Ċ import Ġcom . st as bar . tax ledger . getString Ċ import Ġcom . st as bar . tax ledger . models . Transaction Ċ import Ġcom . st as bar . tax ledger . options . Transactions Options Ċ import Ġcom . st as bar . tax ledger . translations . Text Ċ import Ġde . v ander me er . asci it able . Ascii Table Ċ import Ġde . v ander me er . asci it able . C WC _ Fixed Width Ċ import Ġde . v ander me er . asci it he mes . TA _ Grid Themes Ċ import Ġde . v ander me er . skb . interfaces . transformers . text format . Text Alignment Ċ import Ġorg . fuse source . j ansi . Ansi Console Ċ Ċ class ĠConsole Writer ( transactions : ĠCollection < Transaction >) Ġ: ĠOutput Writer ( transactions ) Ġ{ ĊĊĠĠĠ Ġfun Ġprint Transactions ( options : ĠTransactions Options ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Transactions Ġ= Ġtransactions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġoptions . show Non Fi at Ġ|| Ġit . is Fi at Transaction () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġoptions . show Non Ess ential Ġ|| Ġit . operation Type Ġin Ġessential Operation Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( filtered Transactions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . err ( getString ( Text . NO _ OPER ATIONS )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġat Ġ= ĠAsc ii Table () ĊĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĊĠĠĠĠĠĠĠ Ġat . add Row ( getString ( Text . EX CHANGE ), ĠgetString ( Text . TYPE ), ĠgetString ( Text . DATE ), Ġnull , ĠgetString ( Text . RATE ), Ġnull , ĠgetString ( Text . GET ), Ġnull , ĠgetString ( Text . PA ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setText Alignment ( Text Alignment . CENTER ) ĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĊĠĠĠĠĠĠĠ Ġfiltered Transactions . forEach Ġ{ Ġit . add Row To ( at ) Ġ} ĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĠĠĠĠĠĠĠ Ġat . renderer . c wc Ġ= ĠC WC _ Fixed Width (). add ( 1 0 ). add ( 4 ). add ( 1 9 ). add ( 1 4 ). add ( 4 ). add ( 1 8 ). add ( 4 ). add ( 1 8 ). add ( 4 ) ĊĠĠĠĠĠĠĠ Ġat . context . set Grid Theme ( TA _ Grid Themes . HORIZONTAL ) ĊĠĠĠĠĠĠĠ ĠAn si Console . out . println ( at . render ()) ĊĊĠĠĠĠĠĠĠ ĠAn si Console . out . println ( getString ( Text . TOTAL _ OPER ATIONS ). format ( transactions . size )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTransaction . add Row To ( at : ĠAsc ii Table ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrow Ġ= Ġat . add Row ( toList ()) ĊĊĠĠĠĠĠĠĠ Ġrow . cells [ 3 ]. context . text Alignment Ġ= ĠText Alignment . RIGHT ĊĠĠĠĠĠĠĠ Ġrow . cells [ 5 ]. context . text Alignment Ġ= ĠText Alignment . RIGHT ĊĠĠĠĠĠĠĠ Ġrow . cells [ 7 ]. context . text Alignment Ġ= ĠText Alignment . RIGHT ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġprint Summary () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġg ross Income Ġ= Ġget G ross Income () ĊĠĠĠĠĠĠĠ Ġval Ġexpense Ġ= Ġget Expense () ĊĠĠĠĠĠĠĠ Ġval Ġfees Ġ= Ġget Fees () ĊĠĠĠĠĠĠĠ Ġval Ġexpense With Fees Ġ= Ġexpense Ġ+ Ġfees ĊĠĠĠĠĠĠĠ Ġval Ġnet Income Ġ= Ġget Net Income (" PL N ") ĊĠĠĠĠĠĠĠ Ġval Ġat Summary Ġ= ĠAsc ii Table () ĊĊĠĠĠĠĠĠĠ Ġat Summary . add Rule () ĊĠĠĠĠĠĠĠ Ġat Summary . add Row ( null , Ġnull , ĠgetString ( Text . Summary . SUM MARY )). setText Alignment ( Text Alignment . CENTER ) ĊĠĠĠĠĠĠĠ Ġat Summary . add Rule () ĊĠĠĠĠĠĠĠ Ġat Summary . add Row ( getString ( Text . Summary . GRO SS _ IN CO ME ), ĠgetString ( Text . Summary . EXP ENSE _ WITH _ F EE ), ĠgetString ( Text . Summary . NET _ IN CO ME )) ĊĠĠĠĠĠĠĠ Ġat Summary . add Rule () ĊĠĠĠĠĠĠĠ Ġat Summary . add Row ( g ross Income . strip Trailing Z eros (). to Plain String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġ"% s Ġ(% s ) ". format ( expense With Fees . strip Trailing Z eros (). to Plain String (), Ġfees . strip Trailing Z eros (). to Plain String ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġnet Income . strip Trailing Z eros (). to Plain String ()) ĊĠĠĠĠĠĠĠ Ġat Summary . add Rule () ĊĠĠĠĠĠĠĠ Ġat Summary . set Padding Left Right ( 1 ) ĊĠĠĠĠĠĠĠ ĠAn si Console . out . println ( at Summary . render ()) ĊĊĠĠĠĠĠĠĠ Ġprint De posits And Withdraw s () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprint De posits And Withdraw s () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwithdraw s Ġ= Ġget Withdraw s () ĊĠĠĠĠĠĠĠ Ġval Ġde posits Ġ= Ġget De posits () ĊĠĠĠĠĠĠĠ Ġval Ġat Ġ= ĠAsc ii Table () ĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĠĠĠĠĠĠĠ Ġat . add Row ( getString ( Text . DE POSIT ), ĠgetString ( Text . WITH DRAW )) ĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĠĠĠĠĠĠĠ Ġat . add Row ( de posits . strip Trailing Z eros (). to Plain String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġwithdraw s . strip Trailing Z eros (). to Plain String ()) ĊĠĠĠĠĠĠĠ Ġat . add Rule () ĊĠĠĠĠĠĠĠ Ġat . set Padding Left Right ( 1 ) ĊĠĠĠĠĠĠĠ ĠAn si Console . out . println ( at . render ()) ĊĊĠĠĠ Ġ} ĊĊĊ Ċ }