package Ġuk . co . sentinel web . c uer . app . db . mapper Ċ Ċ import Ġuk . co . sentinel web . c uer . app . db . App Database . Companion . INITIAL _ ID Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Channel Entity Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Media And Channel Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Entity Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Entity . Companion . FLAG _ ARCH IVED Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Entity . Companion . FLAG _ DEFAULT Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Entity . Companion . FLAG _ PLAY _ ITEMS _ FROM _ START Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Entity . Companion . FLAG _ STAR RED Ċ import Ġuk . co . sentinel web . c uer . app . db . entity . Playlist Item Entity Ċ import Ġuk . co . sentinel web . c uer . core . wrapper . Log Wrapper Ċ import Ġuk . co . sentinel web . c uer . domain . Media Domain Ċ import Ġuk . co . sentinel web . c uer . domain . Playlist Domain Ċ Ċ class ĠPlaylist Mapper ( ĊĠĠĠ Ġprivate Ġval Ġimage Mapper : ĠImage Mapper , ĊĠĠĠ Ġprivate Ġval Ġplaylist Item Mapper : ĠPlaylist Item Mapper , ĊĠĠĠ Ġprivate Ġval Ġchannel Mapper : ĠChannel Mapper , ĊĠĠĠ Ġprivate Ġval Ġlog : ĠLog Wrapper Ċ ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . tag ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmap ( domain : ĠPlaylist Domain ): ĠPlaylist Entity Ġ= ĠPlaylist Entity ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġdomain . id Ġ?: ĠINITIAL _ ID , ĊĠĠĠĠĠĠĠ ĠcurrentIndex Ġ= Ġdomain . currentIndex , Ġ// Ġtodo Ġenforce Ġconsistency Ġbetter ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġdomain . config , ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġ( if Ġ( domain . arch ived ) ĠFLAG _ ARCH IVED Ġelse Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( domain . star red ) ĠFLAG _ STAR RED Ġelse Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( domain . default ) ĠFLAG _ DEFAULT Ġelse Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( domain . play Items From Start ) ĠFLAG _ PLAY _ ITEMS _ FROM _ START Ġelse Ġ 0 ), ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġimage Mapper . map Image ( domain . image ), ĊĠĠĠĠĠĠĠ Ġthumb Ġ= Ġimage Mapper . map Image ( domain . thumb ), ĊĠĠĠĠĠĠĠ Ġmode Ġ= Ġdomain . mode , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdomain . title , ĊĠĠĠĠĠĠĠ ĠparentId Ġ= Ġdomain . parentId Ġ?: Ġ- 1 , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġdomain . type , ĊĠĠĠĠĠĠĠ Ġplatform Ġ= Ġdomain . platform , ĊĠĠĠĠĠĠĠ Ġplatform Id Ġ= Ġdomain . platform Id , ĊĠĠĠĠĠĠĠ Ġchannel Id Ġ= Ġdomain . channel Data ?. id ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġmap With Media Entities ( ĊĠĠĠĠĠĠĠ Ġentity : ĠPlaylist Entity , ĊĠĠĠĠĠĠĠ Ġitems : ĠList < Playlist Item Entity > ?, ĊĠĠĠĠĠĠĠ Ġmedi as : ĠMap < Long , ĠMedia And Channel > ?, ĊĠĠĠĠĠĠĠ Ġchannel Entity : ĠChannel Entity ? ĊĠĠĠ Ġ): ĠPlaylist Domain Ġ= ĠPlaylist Domain ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġentity . id , ĊĠĠĠĠĠĠĠ Ġarchived Ġ= Ġentity . flags Ġand ĠFLAG _ ARCH IVED Ġ== ĠFLAG _ ARCH IVED , ĊĠĠĠĠĠĠĠ Ġstar red Ġ= Ġentity . flags Ġand ĠFLAG _ STAR RED Ġ== ĠFLAG _ STAR RED , ĊĠĠĠĠĠĠĠ Ġdefault Ġ= Ġentity . flags Ġand ĠFLAG _ DEFAULT Ġ== ĠFLAG _ DEFAULT , ĊĠĠĠĠĠĠĠ Ġplay Items From Start Ġ= Ġentity . flags Ġand ĠFLAG _ PLAY _ ITEMS _ FROM _ START Ġ== ĠFLAG _ PLAY _ ITEMS _ FROM _ START , ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map NotNull Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedi as ?. get ( item . media Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmedia And Channel Ġ-> Ġplaylist Item Mapper . map ( item , Ġmedia And Channel ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlet Ġ{ Ġlog . e (" No Ġmedia Ġfor Ġ${ item . media Id }"); Ġnull Ġ} Ġ// Ġthrow ĠException (" no Ġmedia Ġfound Ġfor Ġ${ item . media Id }") Ġ// Ġtodo Ġpossibly Ġshould Ġhave Ġa Ġflag Ġhere Ġdb Ġinconsistent Ġ.. Ġbut Ġlikely Ġlegacy Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . sorted By Ġ{ Ġit . order Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġmode Ġ= Ġentity . mode , ĊĠĠĠĠĠĠĠ Ġthumb Ġ= Ġimage Mapper . map Image ( entity . thumb ), ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġimage Mapper . map Image ( entity . image ), ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġentity . config , ĊĠĠĠĠĠĠĠ ĠcurrentIndex Ġ= Ġentity . currentIndex , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġentity . title , ĊĠĠĠĠĠĠĠ ĠparentId Ġ= Ġentity . parentId . take If Ġ{ Ġit Ġ> Ġ- 1 L Ġ}, ĊĠĠĠĠĠĠĠ Ġplatform Id Ġ= Ġentity . platform Id , ĊĠĠĠĠĠĠĠ Ġchannel Data Ġ= Ġchannel Entity ?. let Ġ{ Ġchannel Mapper . map ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġplatform Ġ= Ġentity . platform , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġentity . type ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġmap With Media Domains ( ĊĠĠĠĠĠĠĠ Ġentity : ĠPlaylist Entity , ĊĠĠĠĠĠĠĠ Ġitems : ĠList < Playlist Item Entity > ?, ĊĠĠĠĠĠĠĠ Ġmedi as : ĠMap < Long , ĠMedia Domain >, ĊĠĠĠĠĠĠĠ Ġchannel Entity : ĠChannel Entity ? ĊĠĠĠ Ġ): ĠPlaylist Domain Ġ= ĠPlaylist Domain ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġentity . id , ĊĠĠĠĠĠĠĠ Ġarchived Ġ= Ġentity . flags Ġand ĠFLAG _ ARCH IVED Ġ== ĠFLAG _ ARCH IVED , ĊĠĠĠĠĠĠĠ Ġstar red Ġ= Ġentity . flags Ġand ĠFLAG _ STAR RED Ġ== ĠFLAG _ STAR RED , ĊĠĠĠĠĠĠĠ Ġdefault Ġ= Ġentity . flags Ġand ĠFLAG _ DEFAULT Ġ== ĠFLAG _ DEFAULT , ĊĠĠĠĠĠĠĠ Ġplay Items From Start Ġ= Ġentity . flags Ġand ĠFLAG _ PLAY _ ITEMS _ FROM _ START Ġ== ĠFLAG _ PLAY _ ITEMS _ FROM _ START , ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map NotNull Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedi as . get ( item . media Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmedia Domain Ġ-> Ġplaylist Item Mapper . map ( item , Ġmedia Domain ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlet Ġ{ Ġlog . e (" No Ġmedia Ġfor Ġ${ item . media Id }"); Ġnull Ġ}// throw ĠException (" no Ġmedia Ġfound Ġfor Ġ${ item . media Id }") // ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . sorted By Ġ{ Ġit . order Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġmode Ġ= Ġentity . mode , ĊĠĠĠĠĠĠĠ Ġthumb Ġ= Ġimage Mapper . map Image ( entity . thumb ), ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġimage Mapper . map Image ( entity . image ), ĊĠĠĠĠĠĠĠ Ġconfig Ġ= Ġentity . config , ĊĠĠĠĠĠĠĠ ĠcurrentIndex Ġ= Ġentity . currentIndex , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġentity . title , ĊĠĠĠĠĠĠĠ ĠparentId Ġ= Ġentity . parentId . take If Ġ{ Ġit Ġ> Ġ- 1 L Ġ}, ĊĠĠĠĠĠĠĠ Ġplatform Id Ġ= Ġentity . platform Id , ĊĠĠĠĠĠĠĠ Ġchannel Data Ġ= Ġchannel Entity ?. let Ġ{ Ġchannel Mapper . map ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġplatform Ġ= Ġentity . platform , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġentity . type ĊĠĠĠ Ġ) Ċ }