package Ġcom . wit ty code . po e level ing helper . gem import . services Ċ Ċ import Ġcom . openc sv . CSV Reader Builder Ċ import Ġcom . wit ty code . po e level ing helper . gem import . model . Available Classes Ċ import Ġcom . wit ty code . po e level ing helper . gem import . model . Gem Info Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . core . io . Resource Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ Ċ fun ĠResource . parse G ems Csv (): ĠList < Gem Info > Ġ{ ĊĠĠĠ ĠBufferedReader ( InputStream Reader ( this . inputStream )). use Ġ{ Ġreader Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġgem Infos Ġ= Ġmutable ListOf < Gem Info >() ĊĊĠĠĠĠĠĠĠ Ġval Ġcsv Reader Ġ= ĠCSV Reader Builder ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Skip Lines ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġgem Lines Ġ= Ġcsv Reader . read All () ĊĠĠĠĠĠĠĠ Ġfor Ġ(_ record Ġin Ġgem Lines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgem Info Ġ= Ġ_ record . gem Gem Info From Record () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgem Infos . add ( gem Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġgem Infos ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠArray < String >. gem Gem Info From Record (): ĠGem Info Ġ{ ĊĠĠĠ Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Gem Info :: class . java ) ĊĠĠĠ Ġval Ġgem Info Ġ= ĠGem Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ 9 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Set Of () ĊĠĠĠ Ġ) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 2 .. 8 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this [ i ]. isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgem Info . class Unlock s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Available Classes . valueOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ i ]. toUpperCase ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( ex . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġgem Info Ċ }