package Ġno . nav . hj el pe mid ler . service . o eb sd atabase Ċ Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġk ot li query . query Of Ċ import Ġk ot li query . session Of Ċ import Ġno . nav . hj el pe mid ler . client . h mdb . Hj el pe mid de ld atabase Client Ċ import Ġno . nav . hj el pe mid ler . client . h mdb . h ent produk ter med h ms n rs . Pro du kt Ċ import Ġno . nav . hj el pe mid ler . configuration . Configuration Ċ import Ġno . nav . hj el pe mid ler . models . Hj el pe mid del B ru ker Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġjavax . sql . DataSource Ċ Ċ class ĠH jel pe mid de lo vers ik t Dao ( private Ġval ĠdataSource : ĠDataSource Ġ= ĠConfiguration . dataSource ) Ġ{ ĊĠĠĠ Ġfun Ġh ent Hj el pe mid de lo vers ik t ( fn r : ĠString ): ĠList < Hj el pe mid del B ru ker > Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Language (" Oracle SQL ") ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT ĠAN T ALL , ĠEN H ET , ĠK ATEG OR I 3 _ B ES K RI VEL SE , ĠAR TI KK EL _ B ES K RI VEL SE , ĠAR TI KK EL NUM MER , ĠSER IE _ NUM MER , ĠF Ã ĺ RST E _ UT S EN DEL SE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM ĠXX RT V _ DIG IH OT _ HJ M _ UT LAN _ FN R _ V ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE ĠF NR Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠORDER ĠBY ĠF Ã ĺ RST E _ UT S EN DEL SE ĠDESC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġsession Of ( dataSource ). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Of ( query , Ġfn r ). map Ġ{ Ġrow Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH jel pe mid del B ru ker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġant all Ġ= Ġrow . string (" ANT ALL "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġant all En het Ġ= Ġrow . string (" EN H ET "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ategori Ġ= Ġrow . string (" K ATEG OR I 3 _ B ES K RI VEL SE "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġart ik kel B es k riv else Ġ= Ġrow . string (" AR TI KK EL _ B ES K RI VEL SE "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġart ik kel Nr Ġ= Ġrow . string (" AR TI KK EL NUM MER "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġser ie Nr Ġ= Ġrow . string OrNull (" SER IE _ NUM MER "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdat o U ts en del se Ġ= Ġrow . string (" F Ã ĺ RST E _ UT S EN DEL SE "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. asList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġber ik Ord re lin jer ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġber ik Ord re lin jer ( items : ĠList < Hj el pe mid del B ru ker >): ĠList < Hj el pe mid del B ru ker > Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUnique Ġlist Ġof Ġh ms n rs Ġto Ġfetch Ġdata Ġfor ĊĠĠĠĠĠĠĠ Ġval Ġh ms N rs Ġ= Ġitems . filter Ġ{ Ġit . art ik kel Nr . isNotEmpty () Ġ}. map Ġ{ Ġit . art ik kel Nr Ġ}. toSet () ĊĊĠĠĠĠĠĠĠ Ġ// ĠFetch Ġdata Ġfor Ġh ms n rs Ġfrom Ġhm - gr un n data - api ĊĠĠĠĠĠĠĠ Ġval Ġpro duk ter : ĠList < Pro du kt > Ġ= ĠH jel pe mid de ld atabase Client . h ent Pro duk ter Med H ms n rs ( h ms N rs ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠApply Ġdata Ġto Ġitems ĊĠĠĠĠĠĠĠ Ġval Ġpro duk ter By H ms nr Ġ= Ġpro duk ter . groupBy Ġ{ Ġit . h ms nr Ġ} ĊĠĠĠĠĠĠĠ Ġitems . map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprodu kt Ġ= Ġpro duk ter By H ms nr [ item . art ik kel Nr ]?. first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pro du kt Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġber ik Ord re lin je ( item , Ġprodu kt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġber ik Ord re lin je ( item : ĠH jel pe mid del B ru ker , Ġprodu kt : ĠPro du kt ): ĠH jel pe mid del B ru ker Ġ{ ĊĠĠĠĠĠĠĠ Ġitem . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb Ber ik et Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb Pro du kt Nav n Ġ= Ġprodu kt . art ik kel nav n ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb B es k riv else Ġ= Ġprodu kt . pro du kt bes k riv else ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb K ategori Ġ= Ġprodu kt . isot it tel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb B ilde Ġ= Ġprodu kt . blob Url Lite ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pro du kt . pro du kt Id Ġ!= Ġnull Ġ&& Ġprodu kt . art ik kel Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . h mdb URL Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// www . hj el pe mid de ld atab as en . no / r 1 1 x . asp ? link info =${ pro du kt . pro du kt Id }& art 0 =${ pro du kt . art ik kel Id }& n art = 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠ Ġ} Ċ } Ċ