package Ġcom . thought works . arch guard . report . domain . overview . calculator Ċ Ċ import Ġcom . thought works . arch guard . report . domain . red undancy . Over General ization Repository Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠOver General ization Calculator ( val Ġover General ization Repository : ĠOver General ization Repository ) Ġ: ĠBad S mell Level Calculator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Calculate Result ( system Id : ĠLong ): ĠBad S mell Calculate Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġover General ization Count Ġ= Ġover General ization Repository . get Over General ization Count ( system Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Over General ization Level ( over General ization Count , Ġget Over General ization Count Level Ranges ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Over General ization Count Level Ranges (): ĠArray < Long Range > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Range Level 1 Ġ= Ġ 1 0 L Ġuntil Ġ 3 0 L ĊĠĠĠĠĠĠĠ Ġval Ġcount Range Level 2 Ġ= Ġ 3 0 L Ġuntil Ġ 1 0 0 L ĊĠĠĠĠĠĠĠ Ġval Ġcount Range Level 3 Ġ= Ġ 1 0 0 L Ġuntil ĠLong . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( count Range Level 1 , Ġcount Range Level 2 , Ġcount Range Level 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Over General ization Level ( count : ĠLong , Ġrange : ĠArray < Long Range >): ĠBad S mell Calculate Result Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġrange [ 0 ] Ġ-> ĠBad S mell Calculate Result ( 1 L , Ġ 0 L , Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġrange [ 1 ] Ġ-> ĠBad S mell Calculate Result ( 0 L , Ġ 1 L , Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġrange [ 2 ] Ġ-> ĠBad S mell Calculate Result ( 0 L , Ġ 0 L , Ġ 1 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBad S mell Calculate Result ( 0 L , Ġ 0 L , Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ