package Ġshapes . feature . presentation . stats Ċ Ċ import Ġjavax . inject . Inject Ċ import Ġshapes . base . presentation . Strings Provider Ċ import Ġshapes . feature . R Ċ import Ġshapes . feature . domain . Shape Domain Entity Ċ import Ġshapes . feature . domain . Shape Domain Entity . Type Ċ Ċ class ĠStatistics View Entity Mapper Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġstrings Provider : ĠStrings Provider Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġapply ( shapes List : ĠList < Shape Domain Entity >): ĠList < Statistics Item Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġshapes List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġentity Ġ-> Ġentity . type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġentry Ġ-> Ġmap To Statistics Item Entity ( entry ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap To Statistics Item Entity ( ĊĠĠĠĠĠĠĠ Ġentry : ĠMap . Entry < Type , ĠList < Shape Domain Entity >> ĊĠĠĠ Ġ): ĠStatistics Item Entity Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġshape Name Ġ= Ġwhen Ġ( entry . key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType . S QUARE Ġ-> Ġstrings Provider . getString ( R . string . square ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType . CIR CLE Ġ-> Ġstrings Provider . getString ( R . string . circle ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType . TRI ANGLE Ġ-> Ġstrings Provider . getString ( R . string . triangle ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠStatistics Item Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshape Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . value . size . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . key ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ