/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠT ai lo red ĠMedia ĠGmbH . Ċ Ġ* ĠCreated Ġby ĠFl orian ĠSch uster . Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . th omas gor ke . storage solution . core Ċ Ċ import Ġcom . th omas gor ke . storage solution . core . Storage Type .* Ċ import Ġcom . th omas gor ke . storage solution . core . local . file . File Storage Ċ import Ġcom . th omas gor ke . storage solution . core . local . prefs . Sp Storage Ċ import Ġcom . th omas gor ke . storage solution . core . local . firebase . Firebase Storage Ċ import Ġcom . th omas gor ke . storage solution . core . local . room . Room Database Ċ import Ġcom . th omas gor ke . storage solution . core . local . sql . Sql Database Ċ import Ġcom . th omas gor ke . storage solution . core . model . Author Ċ import Ġcom . th omas gor ke . storage solution . core . model . News Ċ import Ġcom . th omas gor ke . storage solution . core . utils .* Ċ import Ġjava . util .* Ċ Ċ interface ĠData Repo Ġ{ ĊĠĠĠ Ġsuspend Ġfun ĠgetAll Authors ( storage Type : ĠStorage Type ): ĠList < Author > ĊĠĠĠ Ġsuspend Ġfun Ġinsert Author ( storage Type : ĠStorage Type , Ġnew Author : ĠAuthor ): ĠAuthor ĊĠĠĠ Ġsuspend Ġfun Ġdelete Author ( storage Type : ĠStorage Type , Ġauthor Id : ĠString ) ĊĊĠĠĠ Ġsuspend Ġfun ĠgetAll New sBy Author Id ( storage Type : ĠStorage Type , Ġauthor Id : ĠString ): ĠList < News > ĊĠĠĠ Ġsuspend Ġfun Ġinsert News ( storage Type : ĠStorage Type , Ġnews : ĠNews ): ĠNews ĊĠĠĠ Ġsuspend Ġfun Ġupdate News ( storage Type : ĠStorage Type , Ġnews : ĠNews ): ĠNews ĊĠĠĠ Ġsuspend Ġfun Ġdelete News ( storage Type : ĠStorage Type , Ġnews : ĠNews ) Ċ } Ċ Ċ class ĠCore Data Repo ( ĊĠĠĠ Ġprivate Ġval Ġsp Storage : ĠSp Storage , ĊĠĠĠ Ġprivate Ġval Ġsql Database : ĠSql Database , ĊĠĠĠ Ġprivate Ġval Ġfile Storage : ĠFile Storage , ĊĠĠĠ Ġprivate Ġval Ġroom Database : ĠRoom Database , ĊĠĠĠ Ġprivate Ġval Ġfirebase Storage : ĠFirebase Storage Ċ ) Ġ: ĠData Repo Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Authors ( storage Type : ĠStorage Type ): ĠList < Author > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . getAll Authors (). map Ġ{ Ġit . to Author () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . getAll Authors (). map Ġ{ Ġit . to Author () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . getAll Authors (). map Ġ{ Ġit . to Author () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . getAll Authors (). map Ġ{ Ġit . to Author () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . getAll Authors () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Author ( storage Type : ĠStorage Type , Ġnew Author : ĠAuthor ): ĠAuthor Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Author . apply Ġ{ Ġid Ġ= ĠUUID . randomUUID (). toString () Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . insert Author ( new Author . to Preference ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . insert Author ( new Author . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . insert Author ( new Author . to Sql Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . insert Author ( new Author . to Room Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . insert Author ( new Author ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Author ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete Author ( storage Type : ĠStorage Type , Ġauthor Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . delete Author ( author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . delete Author ( author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . delete Author ( author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . delete Author ( author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . delete Author ( author Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll New sBy Author Id ( ĊĠĠĠĠĠĠĠ Ġstorage Type : ĠStorage Type , ĊĠĠĠĠĠĠĠ Ġauthor Id : ĠString ĊĠĠĠ Ġ): ĠList < News > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . getNew sBy Author Id ( author Id ). map Ġ{ Ġit . to News ( author Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . getNew sBy Author Id ( author Id ). map Ġ{ Ġit . to News ( author Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . getNew sBy Author Id ( author Id ). map Ġ{ Ġit . to News ( author Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . getNew sBy Author Id ( author Id ). map Ġ{ Ġit . to News ( author Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . getAll New sBy Author Id ( author Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert News ( storage Type : ĠStorage Type , Ġnews : ĠNews ): ĠNews Ġ{ ĊĠĠĠĠĠĠĠ Ġnews . apply Ġ{ Ġid Ġ= ĠUUID . randomUUID (). toString () Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . insert News ( news . to Preference ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . insert News ( news . to File ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . insert News ( news . to Sql Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . insert News ( news . to Room Entity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . insert News ( news ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnews ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate News ( storage Type : ĠStorage Type , Ġnews : ĠNews ): ĠNews Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . update News ( news . to Preference ()). to News ( news . author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . update News ( news . to File ()). to News ( news . author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . update News ( news . to Sql Entity ()). to News ( news . author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . update News ( news . to Room Entity ()). to News ( news . author Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . update News ( news ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdelete News ( storage Type : ĠStorage Type , Ġnews : ĠNews ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( storage Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES Ġ-> Ġsp Storage . delete News ( news . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFILE Ġ-> Ġfile Storage . delete News ( news . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL Ġ-> Ġsql Database . delete News ( news . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRO OM Ġ-> Ġroom Database . delete News ( news . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFI RE BASE Ġ-> Ġfirebase Storage . delete News ( news ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ