/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 . ĠZ ie del th Ċ Ġ*/ Ċ Ċ package Ġfr . zie del th . ja is . utils . anime s . sql . map pers Ċ Ċ import Ġfr . zie del th . ja is . utils . File Impl Ċ import Ġfr . zie del th . ja is . utils . Hash Utils Ċ import Ġfr . zie del th . ja is . utils . Impl Ċ import Ġfr . zie del th . ja is . utils . anime s . sql . data . An ime Data Ċ import Ġfr . zie del th . ja is . utils . anime s . sql . handlers . An ime Handler Ċ import Ġfr . zie del th . ja is . utils . plugins . Plugin Utils . only Letters And Digits Ċ import Ġorg . apache . commons . d but ils . Query Runner Ċ import Ġorg . apache . commons . d but ils . handlers . Scalar Handler Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ import Ġjava . sql . Connection Ċ import Ġjava . util .* Ċ import Ġjavax . image io . Image IO Ċ Ċ class ĠAn ime Mapper Ġ{ ĊĠĠĠ Ġfun Ġget ( connection : ĠConnection ?): ĠMutable List < An ime Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġah Ġ= ĠAn ime Handler ( connection ) ĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠQuery Runner () ĊĠĠĠĠĠĠĠ Ġreturn Ġrunner . query ( connection , Ġ" SELECT Ġ* ĠFROM Ġan imes ", Ġah ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( connection : ĠConnection ?, Ġid : ĠLong ?): ĠAn ime Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġah Ġ= ĠAn ime Handler ( connection ) ĊĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠQuery Runner () ĊĠĠĠĠĠĠĠ Ġreturn Ġrunner . query ( connection , Ġ" SELECT Ġ* ĠFROM Ġan imes ĠWHERE Ġid Ġ= Ġ?", Ġah , Ġid ). first OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert ( ĊĠĠĠĠĠĠĠ Ġconnection : ĠConnection ?, ĊĠĠĠĠĠĠĠ Ġan ime Code Mapper : ĠAn ime Code Mapper , ĊĠĠĠĠĠĠĠ Ġcountry Id : ĠLong ?, ĊĠĠĠĠĠĠĠ Ġrelease Date : ĠString ?, ĊĠĠĠĠĠĠĠ Ġname : ĠString ?, ĊĠĠĠĠĠĠĠ Ġimage : ĠString ?, ĊĠĠĠĠĠĠĠ Ġdescription : ĠString ?, ĊĠĠĠĠĠĠĠ Ġsave Image : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ): ĠAn ime Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= ĠHash Utils . hash String ( name ?. lowercase ()?. only Letters And Digits ()) ĊĠĠĠĠĠĠĠ Ġval Ġan ime Code Ġ= Ġan ime Code Mapper . get ( connection , Ġcode ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( anime Code Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġan ime Ġ= Ġget ( connection , Ġan ime Code . anime Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anime ?. description ?. trim (). isNull OrEmpty () Ġ&& Ġ! description ?. trim (). isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠQuery Runner () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" UPDATE Ġan imes ĠSET Ġdescription Ġ= Ġ? ĠWHERE Ġid Ġ= Ġ? " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . update ( connection , Ġquery , Ġdescription , Ġan ime ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Ġ= Ġget ( connection , Ġan ime ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( anime ?. image ?. trim (). isNull OrEmpty () Ġ|| Ġan ime ?. image ?. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . startsWith (" http ") Ġ== Ġtrue ) Ġ&& Ġ! image ?. trim (). isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠQuery Runner () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" UPDATE Ġan imes ĠSET Ġimage Ġ= Ġ? ĠWHERE Ġid Ġ= Ġ? " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . update ( connection , Ġquery , Ġsave An ime Image ( image , Ġsave Image ), Ġan ime ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Ġ= Ġget ( connection , Ġan ime ?. id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġan ime ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsh Ġ= ĠScalar Handler < Long >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrunner Ġ= ĠQuery Runner () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INSERT ĠINTO Ġan imes Ġ( country _ id , Ġrelease _ date , Ġname , Ġimage , Ġdescription ) ĠVALUES Ġ( ?, Ġ?, Ġ?, Ġ?, Ġ? )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Id : ĠLong Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunner . insert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelease Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ?. trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave An ime Image ( image , Ġsave Image ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Ġ= Ġget ( connection , Ġnew Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Code Mapper . insert ( connection , Ġan ime ?. id , Ġcode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġan ime ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġimage Ġis Ġnot Ġnull , Ġresize Ġit Ġto Ġ 3 5 0 x 5 0 0 Ġand Ġsave Ġit Ġto Ġthe Ġlocal Ġfile Ġsystem . ĠIf Ġthe Ġimage Ġis Ġnull , Ġreturn ĊĠĠĠĠ Ġ* Ġnull ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġimage ĠThe Ġimage ĠURL . ĊĠĠĠĠ Ġ* Ġ@ param Ġsave ĠIf Ġtrue , Ġthe Ġimage Ġwill Ġbe Ġsaved Ġto Ġthe Ġlocal Ġfile Ġsystem . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġimage Ġpath . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsave An ime Image ( image : ĠString ?, Ġsave : ĠBoolean ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġimage Path Ġ= Ġimage ĊĊĠĠĠĠĠĠĠ Ġif Ġ( save ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImp l . try Catch (" Failed Ġto Ġcreate Ġan ime Ġimage Ġfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffered Image Ġ= ĠFile Impl . resize Image ( Image IO . read ( URL ( image )), Ġ 3 5 0 , Ġ 5 0 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġ"$ uuid . jpg " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal File Ġ= ĠFile ( File Impl . directories ( true , Ġ" images ", Ġ" anime s "), ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( buffered Image , Ġ" jpg ", Ġlocal File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb File Ġ= ĠFile ( File Impl . directories ( false , Ġ"/ var / www / html / images / anime s "), ĠfileName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( buffered Image , Ġ" jpg ", Ġweb File ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Path Ġ= Ġ" images / anime s /$ fileName " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġimage Path ĊĠĠĠ Ġ} Ċ }