/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠPeng ĠW an Ġ< ph yl ame @ 1 6 3 . com > Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠJ em . Ċ Ġ* Ċ Ġ* Ġ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 Ġj em . sc j . app Ċ Ċ import Ġj cl p . log . Log Ċ import Ġj cl p . setting . Map Settings Ċ import Ġj em . Attributes Ċ import Ġj em . Book Ċ import Ġj em . ep m . util . Maker Param Ċ import Ġj em . ep m . util . Parser Param Ċ import Ġj em . kotlin . set Ċ import Ġj em . util . J em Exception Ċ import Ġj em . util . Variants Ċ import Ġm ala . core . App Ċ import Ġm ala . core . App . tr Ċ import Ġjava . io . FileNotFoundException Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Books " Ċ Ċ fun Ġcheck Input Format ( format : ĠString , Ġpath : ĠString Ġ= Ġ"") : ĠBoolean Ġ= Ġif Ġ( format . isEmpty ()) Ġ{ ĊĠĠĠ ĠApp . error ( tr (" error . input . unknown ", Ġpath )) ĊĠĠĠ Ġfalse Ċ } Ġelse Ġif Ġ( SCI . ep m Manager . getService ( format )?. has Parser () Ġ!= Ġtrue ) Ġ{ ĊĠĠĠ ĠApp . error ( tr (" error . input . unsupported ", Ġformat )) ĊĠĠĠ Ġfalse Ċ } Ġelse Ġtrue Ċ Ċ fun Ġcheck Output Format ( format : ĠString , Ġpath : ĠString Ġ= Ġ"") : ĠBoolean Ġ= Ġif Ġ( format . isEmpty ()) Ġ{ ĊĠĠĠ ĠApp . error ( tr (" error . output . unknown ", Ġpath )) ĊĠĠĠ Ġfalse Ċ } Ġelse Ġif Ġ( SCI . ep m Manager . getService ( format )?. has Maker () Ġ!= Ġtrue ) Ġ{ ĊĠĠĠ ĠApp . error ( tr (" error . output . unsupported ", Ġformat )) ĊĠĠĠ Ġfalse Ċ } Ġelse Ġtrue Ċ Ċ fun Ġout Param ( book : ĠBook ): ĠM aker Param Ġ= ĠM aker Param . builder () ĊĠĠĠĠĠĠĠ Ġ. book ( book ) ĊĠĠĠĠĠĠĠ Ġ. output ( SCI . output ) ĊĠĠĠĠĠĠĠ Ġ. format ( SCI . output Format ) ĊĠĠĠĠĠĠĠ Ġ. arguments ( Map Settings ( SCI . out Arguments )) ĊĠĠĠĠĠĠĠ Ġ. build () Ċ Ċ fun Ġnew Book ( att aching : ĠBoolean ): ĠBook Ġ{ ĊĠĠĠ Ġval Ġbook Ġ= ĠBook () ĊĠĠĠ Ġattach Book ( book , Ġatt aching ) ĊĠĠĠ ĠApp . sci Action Ġ{ Ġon Book Opened ( book , Ġnull ) Ġ} ĊĠĠĠ Ġreturn Ġbook Ċ } Ċ Ċ fun Ġopen Book ( param : ĠParser Param , Ġatt aching : ĠBoolean ): ĠBook ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġload Book ( param , Ġatt aching ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . error ( tr (" error . misc . no File ", Ġparam . file Ġ?: Ġparam . input )) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . error ( tr (" error . jem . open Failed ", Ġparam . file Ġ?: Ġparam . input ), Ġe ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun Ġload Book ( param : ĠParser Param , Ġatt aching : ĠBoolean ): ĠBook Ġ{ ĊĠĠĠ ĠApp . sci Action Ġ{ Ġon Open Book ( param ) Ġ} ĊĠĠĠ Ġval Ġbook : ĠBook ? ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġbook Ġ= ĠS CI . ep m Manager . read Book ( param ) ĊĠĠĠĠĠĠĠ Ġif Ġ( book Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJ em Exception ( tr (" error . input . unsupported ", Ġparam . format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . sci Action Ġ{ Ġon Open Failed ( e , Ġparam ) Ġ} ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠ Ġ} ĊĠĠĠ Ġattach Book ( book , Ġatt aching ) ĊĠĠĠ ĠApp . sci Action Ġ{ Ġon Book Opened ( book , Ġparam ) Ġ} ĊĠĠĠ Ġreturn Ġbook Ċ } Ċ Ċ fun Ġattach Book ( book : ĠBook , Ġatt aching : ĠBoolean ) Ġ{ ĊĠĠĠ Ġif Ġ( att aching ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattach Attributes ( book ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( att aching ) Ġ{ ĊĠĠĠĠĠĠĠ Ġattach Extensions ( book ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsave Book ( param : ĠM aker Param ): ĠString ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmake Book ( param ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . error ( tr (" error . jem . save Failed ", Ġparam . file Ġ?: Ġparam . output ), Ġe ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmake Book ( param : ĠM aker Param ): ĠString ? Ġ{ ĊĠĠĠ ĠApp . sci Action Ġ{ Ġon Save Book ( param ) Ġ} ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! SCI . ep m Manager . write Book ( param )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJ em Exception ( tr (" error . output . unsupported ", Ġparam . format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . sci Action Ġ{ Ġon Save Failed ( e , Ġparam ) Ġ} ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠ Ġ} ĊĠĠĠ ĠApp . sci Action Ġ{ Ġon Book Saved ( param ) Ġ} ĊĠĠĠ Ġreturn Ġparam . file ?. path Ġ?: Ġparam . output Ċ } Ċ Ċ private Ġfun Ġattach Attributes ( book : ĠBook ) Ġ{ ĊĠĠĠ Ġfor Ġ(( k , Ġv ) Ġin ĠS CI . out Attributes ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠVari ants . parse ( v . toString (), ĠAttributes . getType ( k )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . error ( tr (" error . misc . bad String ", Ġv )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" cannot Ġconvert Ġ\" { 0 }\" Ġto Ġ\" { 1 } \"", Ġv , Ġk ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook [ k ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . error ( tr (" error . misc . bad String ", Ġv ), Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġattach Extensions ( book : ĠBook ) Ġ{ ĊĠĠĠ Ġbook . extensions . update ( SCI . out Extensions ) Ċ } Ċ