/* Ċ Ġ* ĠModule : Ġr 2 - shared - kotlin Ċ Ġ* ĠDevelopers : ĠA fer d ita ĠM uri qi , ĠCl Ã©ment ĠBa um ann , ĠM ick a Ã« l ĠMenu Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġa ĠBSD - style Ġlicense Ġwhich Ġis Ġdetailed Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġpresent Ġin Ġthe Ġproject Ġrepository Ġwhere Ġthis Ġsource Ġcode Ġis Ġmaintained . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . shared . publication Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġkotlinx . parcel ize . Ignored On Parcel Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ import Ġkotlinx . parcel ize . Write With Ċ import Ġorg . json . JSONObject Ċ import Ġorg . read ium . r 2 . shared . JSON able Ċ import Ġorg . read ium . r 2 . shared . extensions .* Ċ import Ġorg . read ium . r 2 . shared . publication . presentation . Presentation Ċ import Ġorg . read ium . r 2 . shared . publication . presentation . presentation Ċ import Ġorg . read ium . r 2 . shared . util . logging . Warning Logger Ċ import Ġorg . read ium . r 2 . shared . util . logging . log Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġhttps :// read ium . org / web pub - manifest / schema / metadata . schema . json Ċ Ġ* Ċ Ġ* Ġ@ param Ġreading Progress ion ĠWARNING : ĠThis Ġcontains Ġthe Ġreading Ġprogress ion Ġas Ġdeclared Ġin Ġthe Ċ Ġ* ĠĠĠĠ Ġpublication , Ġso Ġit Ġmight Ġbe Ġ[ AUTO ]. ĠTo Ġlay Ġout Ġthe Ġcontent , Ġuse Ġ[ effective Reading Progress ion ] Ċ Ġ* ĠĠĠĠ Ġto Ġget Ġthe Ġcalculated Ġreading Ġprogress ion Ġfrom Ġthe Ġdeclared Ġdirection Ġand Ġthe Ġlanguage . Ċ Ġ* Ġ@ param Ġother Metadata ĠAdditional Ġmetadata Ġfor Ġextensions , Ġas Ġa ĠJSON Ġdictionary . Ċ Ġ*/ Ċ @ Parcel ize Ċ data Ġclass ĠMetadata ( ĊĠĠĠ Ġval Ġidentifier : ĠString ? Ġ= Ġnull , Ġ// ĠURI ĊĠĠĠ Ġval Ġtype : ĠString ? Ġ= Ġnull , Ġ// ĠURI Ġ(@ type ) ĊĠĠĠ Ġval Ġlocalized Title : ĠLocal ized String , ĊĠĠĠ Ġval Ġlocalized Subtitle : ĠLocal ized String ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġlocalized Sort As : ĠLocal ized String ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmodified : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġpublished : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġlanguages : ĠList < String > Ġ= Ġempty List (), Ġ// ĠB CP Ġ 4 7 Ġtag ĊĠĠĠ Ġval Ġsubjects : ĠList < Subject > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġauthors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġtrans l ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġeditors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġartists : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġillustr ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġletter ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġp encil ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġcolor ists : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġin kers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġn arr ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġcontributors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġpublish ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġimp rint s : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġreading Progress ion : ĠReading Progress ion Ġ= ĠReading Progress ion . LTR , ĊĠĠĠ Ġval Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġduration : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġval ĠnumberOf Pages : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġbelongs To : ĠMap < String , ĠList < Collection >> Ġ= Ġempty Map (), ĊĠĠĠ Ġval Ġother Metadata : Ġ@ Write With < JSON Parcel er > ĠMap < String , ĠAny > Ġ= Ġmap Of () Ċ ) Ġ: ĠJSON able , ĠParcel able Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġidentifier : ĠString ? Ġ= Ġnull , Ġ// ĠURI ĊĠĠĠĠĠĠĠ Ġtype : ĠString ? Ġ= Ġnull , Ġ// ĠURI Ġ(@ type ) ĊĠĠĠĠĠĠĠ Ġlocalized Title : ĠLocal ized String , ĊĠĠĠĠĠĠĠ Ġlocalized Subtitle : ĠLocal ized String ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġlocalized Sort As : ĠLocal ized String ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġmodified : ĠDate ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġpublished : ĠDate ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġlanguages : ĠList < String > Ġ= Ġempty List (), Ġ// ĠB CP Ġ 4 7 Ġtag ĊĠĠĠĠĠĠĠ Ġsubjects : ĠList < Subject > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġauthors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġtrans l ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġeditors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġartists : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġillustr ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġletter ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġp encil ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġcolor ists : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġin kers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġn arr ators : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġcontributors : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġpublish ers : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġimp rint s : ĠList < Contributor > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġreading Progress ion : ĠReading Progress ion Ġ= ĠReading Progress ion . LTR , ĊĠĠĠĠĠĠĠ Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġduration : ĠDouble ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠnumberOf Pages : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġbelongs To : ĠMap < String , ĠList < Collection >> Ġ= Ġempty Map (), ĊĠĠĠĠĠĠĠ Ġbelongs To Collections : ĠList < Collection > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġbelongs To Series : ĠList < Collection > Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠ Ġother Metadata : ĠMap < String , ĠAny > Ġ= Ġmap Of () ĊĠĠĠ Ġ): Ġthis ( ĊĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġidentifier , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠ Ġlocalized Title Ġ= Ġlocalized Title , ĊĠĠĠĠĠĠĠ Ġlocalized Subtitle Ġ= Ġlocalized Subtitle , ĊĠĠĠĠĠĠĠ Ġlocalized Sort As Ġ= Ġlocalized Sort As , ĊĠĠĠĠĠĠĠ Ġmodified Ġ= Ġmodified , ĊĠĠĠĠĠĠĠ Ġpublished Ġ= Ġpublished , ĊĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġlanguages , ĊĠĠĠĠĠĠĠ Ġsubjects Ġ= Ġsubjects , ĊĠĠĠĠĠĠĠ Ġauthors Ġ= Ġauthors , ĊĠĠĠĠĠĠĠ Ġtrans l ators Ġ= Ġtrans l ators , ĊĠĠĠĠĠĠĠ Ġeditors Ġ= Ġeditors , ĊĠĠĠĠĠĠĠ Ġartists Ġ= Ġartists , ĊĠĠĠĠĠĠĠ Ġillustr ators Ġ= Ġillustr ators , ĊĠĠĠĠĠĠĠ Ġletter ers Ġ= Ġletter ers , ĊĠĠĠĠĠĠĠ Ġp encil ers Ġ= Ġp encil ers , ĊĠĠĠĠĠĠĠ Ġcolor ists Ġ= Ġcolor ists , ĊĠĠĠĠĠĠĠ Ġin kers Ġ= Ġin kers , ĊĠĠĠĠĠĠĠ Ġn arr ators Ġ= Ġn arr ators , ĊĠĠĠĠĠĠĠ Ġcontributors Ġ= Ġcontributors , ĊĠĠĠĠĠĠĠ Ġpublish ers Ġ= Ġpublish ers , ĊĠĠĠĠĠĠĠ Ġimp rint s Ġ= Ġimp rint s , ĊĠĠĠĠĠĠĠ Ġreading Progress ion Ġ= Ġreading Progress ion , ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠ Ġduration Ġ= Ġduration , ĊĠĠĠĠĠĠĠ ĠnumberOf Pages Ġ= ĠnumberOf Pages , ĊĠĠĠĠĠĠĠ Ġbelongs To Ġ= Ġbelongs To ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( belongsTo Collections . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" collection "] Ġ= Ġbelongs To Collections ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( belongsTo Series . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" series "] Ġ= Ġbelongs To Series ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap (), ĊĠĠĠĠĠĠĠ Ġother Metadata Ġ= Ġother Metadata ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġdefault Ġtranslation Ġstring Ġfor Ġthe Ġ[ localized Title ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtitle : ĠString Ġget () Ġ= Ġlocalized Title . string ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġdefault Ġtranslation Ġstring Ġfor Ġthe Ġ[ localized Sort As ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsort As : ĠString ? Ġget () Ġ= Ġlocalized Sort As ?. string ĊĊĠĠĠ Ġval Ġbelongs To Collections : ĠList < Collection > Ġget () Ġ= ĊĠĠĠĠĠĠĠ Ġbelongs To [" collection "] Ġ?: Ġempty List () ĊĊĠĠĠ Ġval Ġbelongs To Series : ĠList < Collection > Ġget () Ġ= ĊĠĠĠĠĠĠĠ Ġbelongs To [" series "] Ġ?: Ġempty List () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġa Ġ[ Reading Progress ion ] Ġwhen Ġthe Ġvalue Ġof Ġ[ reading Progress ion ] Ġis Ġset Ġto ĊĠĠĠĠ Ġ* Ġauto , Ġusing Ġthe Ġpublication Ġlanguage . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġthis Ġissue Ġfor Ġmore Ġdetails : Ġhttps :// github . com / read ium / architecture / issues / 1 1 3 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Ignored On Parcel ĊĠĠĠ Ġval Ġeffective Reading Progress ion : ĠReading Progress ion Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ ĠReading Progress ion . LTR ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerial izes Ġa Ġ[ Metadata ] Ġto Ġits ĠRW PM ĠJSON Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoJSON () Ġ= ĠJSONObject ( other Metadata ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput (" identifier ", Ġidentifier ) ĊĠĠĠĠĠĠĠ Ġput ("@ type ", Ġtype ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" title ", Ġlocalized Title ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" subtitle ", Ġlocalized Subtitle ) ĊĠĠĠĠĠĠĠ Ġput (" modified ", Ġmodified ?. to Iso 8 6 0 1 String ()) ĊĠĠĠĠĠĠĠ Ġput (" published ", Ġpublished ?. to Iso 8 6 0 1 String ()) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" language ", Ġlanguages ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" sort As ", Ġlocalized Sort As ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" subject ", Ġsubjects ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" author ", Ġauthors ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" translator ", Ġtrans l ators ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" editor ", Ġeditors ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" artist ", Ġartists ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" ill ustr ator ", Ġillustr ators ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" letter er ", Ġletter ers ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" pen c iler ", Ġp encil ers ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" color ist ", Ġcolor ists ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" inker ", Ġin kers ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" n arr ator ", Ġn arr ators ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" contributor ", Ġcontributors ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" publisher ", Ġpublish ers ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" imp rint ", Ġimp rint s ) ĊĠĠĠĠĠĠĠ Ġput (" reading Progress ion ", Ġreading Progress ion . value ) ĊĠĠĠĠĠĠĠ Ġput (" description ", Ġdescription ) ĊĠĠĠĠĠĠĠ Ġput (" duration ", Ġduration ) ĊĠĠĠĠĠĠĠ Ġput (" numberOf Pages ", ĠnumberOf Pages ) ĊĠĠĠĠĠĠĠ Ġput If NotEmpty (" belongsTo ", Ġbelongs To ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSynt actic Ġs ugar Ġto Ġaccess Ġthe Ġ[ other Metadata ] Ġvalues Ġby Ġsub script ing Ġ[ Metadata ] Ġdirectly . ĊĠĠĠĠ Ġ* Ġ` metadata [" layout "] Ġ== Ġmetadata . other Metadata [" layout "]` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġget ( key : ĠString ): ĠAny ? Ġ= Ġother Metadata [ key ] ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠParses Ġa Ġ[ Metadata ] Ġfrom Ġits ĠRW PM ĠJSON Ġrepresentation . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġmetadata Ġcan 't Ġbe Ġparsed , Ġa Ġwarning Ġwill Ġbe Ġlogged Ġwith Ġ[ warnings ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom JSON ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson : ĠJSONObject ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormalize Href : ĠLink Href Normalizer Ġ= ĠLink Href Normalizer Identity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwarnings : ĠWarning Logger ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ): ĠMetadata ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocalized Title Ġ= ĠLocal ized String . from JSON ( json . remove (" title "), Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( localized Title Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarnings ?. log ( Metadata :: class . java , Ġ"[ title ] Ġis Ġrequired ", Ġjson ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġjson . remove (" identifier ") Ġas ? ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġjson . remove ("@ type ") Ġas ? ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocalized Subtitle Ġ= ĠLocal ized String . from JSON ( json . remove (" subtitle "), Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodified Ġ= Ġ( json . remove (" modified ") Ġas ? ĠString )?. iso 8 6 0 1 ToDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublished Ġ= Ġ( json . remove (" published ") Ġas ? ĠString )?. iso 8 6 0 1 ToDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlanguages Ġ= Ġjson . opt Strings From Array Or Single (" language ", Ġremove Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocalized Sort As Ġ= ĠLocal ized String . from JSON ( json . remove (" sort As "), Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubjects Ġ= ĠSubject . from JSONArray ( json . remove (" subject "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthors Ġ= ĠContributor . from JSONArray ( json . remove (" author "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrans l ators Ġ= ĠContributor . from JSONArray ( json . remove (" translator "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditors Ġ= ĠContributor . from JSONArray ( json . remove (" editor "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartists Ġ= ĠContributor . from JSONArray ( json . remove (" artist "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġillustr ators Ġ= ĠContributor . from JSONArray ( json . remove (" ill ustr ator "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġletter ers Ġ= ĠContributor . from JSONArray ( json . remove (" letter er "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp encil ers Ġ= ĠContributor . from JSONArray ( json . remove (" pen c iler "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor ists Ġ= ĠContributor . from JSONArray ( json . remove (" color ist "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin kers Ġ= ĠContributor . from JSONArray ( json . remove (" inker "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn arr ators Ġ= ĠContributor . from JSONArray ( json . remove (" n arr ator "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontributors Ġ= ĠContributor . from JSONArray ( json . remove (" contributor "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublish ers Ġ= ĠContributor . from JSONArray ( json . remove (" publisher "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimp rint s Ġ= ĠContributor . from JSONArray ( json . remove (" imp rint "), Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreading Progress ion Ġ= ĠReading Progress ion ( json . remove (" reading Progress ion ") Ġas ? ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġjson . remove (" description ") Ġas ? ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġjson . opt Positive Double (" duration ", Ġremove Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumberOf Pages Ġ= Ġjson . opt Positive Int (" numberOf Pages ", Ġremove Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbelongs ToJson Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . remove (" belongsTo ") Ġas ? ĠJSONObject Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . remove (" bel ongs _ to ") Ġas ? ĠJSONObject Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJSONObject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbelongs To Ġ= Ġmutable Map Of < String , ĠList < Collection >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġbelongs ToJson . keys ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! belongsTo Json . isNull ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġbelongs ToJson . get ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbelongs To [ key ] Ġ= ĠCollection . from JSONArray ( value , Ġnormalize Href , Ġwarnings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMetadata ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġidentifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Title Ġ= Ġlocalized Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Subtitle Ġ= Ġlocalized Subtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Sort As Ġ= Ġlocalized Sort As , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Ġ= Ġmodified , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublished Ġ= Ġpublished , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguages Ġ= Ġlanguages , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubjects Ġ= Ġsubjects , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthors Ġ= Ġauthors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans l ators Ġ= Ġtrans l ators , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditors Ġ= Ġeditors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartists Ġ= Ġartists , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġillustr ators Ġ= Ġillustr ators , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġletter ers Ġ= Ġletter ers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp encil ers Ġ= Ġp encil ers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ists Ġ= Ġcolor ists , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin kers Ġ= Ġin kers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn arr ators Ġ= Ġn arr ators , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontributors Ġ= Ġcontributors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublish ers Ġ= Ġpublish ers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp rint s Ġ= Ġimp rint s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreading Progress ion Ġ= Ġreading Progress ion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġduration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnumberOf Pages Ġ= ĠnumberOf Pages , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbelongs To Ġ= Ġbelongs To . toMap (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Metadata Ġ= Ġjson . toMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ type ] Ġinstead ", ĠReplace With (" type ")) ĊĠĠĠ Ġval Ġrdf Type : ĠString ? Ġget () Ġ= Ġtype ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ localize Title ] Ġinstead .", ĠReplace With (" localized Title ")) ĊĠĠĠ Ġval Ġmult il anguage Title : ĠLocal ized String ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlocalized Title ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ localized Title . get ] Ġinstead ", ĠReplace With (" localized Title . translation For Language ( key )?. string ")) ĊĠĠĠ Ġfun Ġtitle For Lang ( key : ĠString ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġlocalized Title . get Or Fallback ( key )?. string ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ reading Progress ion ] Ġinstead .", ĠReplace With (" reading Progress ion ")) ĊĠĠĠ Ġval Ġdirection : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġreading Progress ion . value ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ published ] Ġinstead ", ĠReplace With (" published ?. to Iso 8 6 0 1 String () ")) ĊĠĠĠ Ġval Ġpublication Date : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpublished ?. to Iso 8 6 0 1 String () ĊĊĠĠĠ Ġ@ Deprecated (" Use Ġ[ presentation ] Ġinstead ", ĠReplace With (" presentation ", Ġ" org . read ium . r 2 . shared . publication . presentation . presentation ")) ĊĠĠĠ Ġval Ġrend ition : ĠPresentation ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpresentation ĊĊĠĠĠ Ġ@ Deprecated (" Access Ġfrom Ġ[ other Metadata ] Ġinstead ", ĠReplace With (" other Metadata [\" source \"] Ġas ? ĠString ")) ĊĠĠĠ Ġval Ġsource : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġother Metadata [" source "] Ġas ? ĠString ĊĊĠĠĠ Ġ@ Deprecated (" Not Ġused Ġanymore ", ĠReplace With (" null ")) ĊĠĠĠ Ġval Ġrights : ĠString ? Ġget () Ġ= Ġnull ĊĊĠĠĠ Ġ@ Deprecated (" Rename d Ġinto Ġ[ toJSON ]", ĠReplace With (" toJSON () ")) ĊĠĠĠ Ġfun Ġwrite JSON (): ĠJSONObject Ġ= ĠtoJSON () Ċ Ċ }