/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠSimple Cloud Ġauthors Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ċ Ġ* Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ċ Ġ* Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . Ċ Ġ* ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , Ċ Ġ* ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , Ċ Ġ* ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER Ċ Ġ* ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġeu . the simple cloud . runner . dependency Ċ Ċ import Ġeu . the simple cloud . runner . utils . Downloader Ċ import Ġeu . the simple cloud . runner . utils . Web Content Loader Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠIntelliJ ĠIDEA . Ċ Ġ* ĠDate : Ġ 0 4 . 0 9 . 2 0 2 0 Ċ Ġ* ĠTime : Ġ 1 6 : 4 5 Ċ Ġ* Ġ@ author ĠFre der ick ĠBa ier Ċ Ġ*/ Ċ class ĠAdvanced Cloud Dependency ( groupId : ĠString , Ġartifact Id : ĠString , Ġversion : ĠString ) Ġ: ĠCloud Dependency ( groupId , Ġartifact Id , Ġversion ) Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġget Download URL ( repo Url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetUrl Without Extension ( repo Url ) Ġ+ Ġ". jar " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Downloaded File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( DEPEND ENCI ES _ DIR , Ġ"${ getName ()}. jar ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Downloaded Info File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( DEPEND ENCY _ INFO _ DIR , Ġ"${ getName ()}. info ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexist In Repo ( repo Url : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWeb Content Loader (). load Content ( get Download URL ( repo Url )) Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġdownload ( repo Url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdownload ( repo Url , Ġget Downloaded File ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġdownload ( repo Url : ĠString , Ġdownload File : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDown loader (). userAgent Download ( this . get Download URL ( repo Url ), Ġdownload File ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Main URL ( repo Url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepo Url Ġ+ ĠgroupId . replace ("\\ .". to Regex (), Ġ"/") Ġ+ Ġ"/" Ġ+ Ġartifact Id Ġ+ Ġ"/" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetUrl Without Extension ( repo Url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Main URL ( repo Url ) Ġ+ Ġversion Ġ+ Ġ"/" Ġ+ Ġartifact Id Ġ+ Ġ"-" Ġ+ Ġversion ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Dependency With New er Version ( other : ĠAdvanced Cloud Dependency ): ĠAdvanced Cloud Dependency Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdependency Version Ġ= Ġget Version String As IntArray ( this . version ) ĊĠĠĠĠĠĠĠ Ġval Ġother Dependency Version Ġ= Ġget Version String As IntArray ( other . version ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dependency Version [ 0 ] Ġ> Ġother Dependency Version [ 0 ]) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ( other Dependency Version [ 0 ] Ġ> Ġdependency Version [ 0 ]) Ġreturn Ġother ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dependency Version [ 1 ] Ġ> Ġother Dependency Version [ 1 ]) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ( other Dependency Version [ 1 ] Ġ> Ġdependency Version [ 1 ]) Ġreturn Ġother ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dependency Version [ 2 ] Ġ> Ġother Dependency Version [ 2 ]) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġif Ġ( other Dependency Version [ 2 ] Ġ> Ġdependency Version [ 2 ]) Ġreturn Ġother ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Version String As IntArray ( version : ĠString ): ĠArray < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversion Parts Ġ= Ġversion . split (".") ĊĠĠĠĠĠĠĠ Ġval Ġmajor Ġ= Ġversion Parts [ 0 ]. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġminor Ġ= Ġparse Version Part ( version Parts . get OrNull ( 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġpatch Ġ= Ġparse Version Part ( version Parts . get OrNull ( 2 )) ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( major , Ġminor , Ġpatch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Version Part ( part : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( part Ġ== Ġnull ) Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġval ĠcharArray Ġ= Ġpart . toCharArray () ĊĠĠĠĠĠĠĠ Ġval Ġnumbers Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( char Ġin ĠcharArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char . is Digit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnumbers . add ( char . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( numbers . isEmpty ()) Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġnumbers . join ToString (" "). toInt () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠDE PEND ENCI ES _ DIR Ġ= ĠFile (" dependencies /") ĊĊĠĠĠĠĠĠĠ Ġval ĠDE PEND ENCY _ INFO _ DIR Ġ= ĠFile (" dependencies / info /") ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom Coords ( coords : ĠString ): ĠAdvanced Cloud Dependency Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġcoords . split (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( split . size Ġ== Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAdvanced Cloud Dependency ( split [ 0 ], Ġsplit [ 1 ], Ġsplit [ 2 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }