package Ġcom . github . vh rom ada . catalog . web . controller Ċ Ċ import Ġcom . github . vh rom ada . catalog . web . connector . Music Connector Ċ import Ġcom . github . vh rom ada . catalog . web . fo . Music FO Ċ import Ġcom . github . vh rom ada . catalog . web . mapper . Music Mapper Ċ import Ġorg . springframework . stereotype . Controller Ċ import Ġorg . springframework . ui . Model Ċ import Ġorg . springframework . validation . Errors Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . Model Attribute Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġjavax . validation . Valid Ċ Ċ /** Ċ Ġ* ĠA Ġclass Ġrepresents Ġcontroller Ġfor Ġmusic . Ċ Ġ* Ċ Ġ* Ġ@ author ĠV lad im ir ĠH rom ada Ċ Ġ*/ Ċ @ Controller (" music Controller ") Ċ @ RequestMapping ("/ music ") Ċ class ĠMusic Controller ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConnector Ġfor Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġmusic Connector : ĠMusic Connector , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMapper Ġfor Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġmapper : ĠMusic Mapper Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġnew Ġdata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ new ") ĊĠĠĠ Ġfun Ġprocess New (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . new Data () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġpage Ġwith Ġlist Ġof Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġmodel ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("", Ġ"/ list ") ĊĠĠĠ Ġfun Ġshow List ( model : ĠModel ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= Ġmusic Connector . getAll () ĊĠĠĠĠĠĠĠ Ġval Ġstatistics Ġ= Ġmusic Connector . get Statistics () ĊĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" music ", Ġmusic List ) ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" statistics ", Ġstatistics ) ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" title ", Ġ" Music ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" music / index " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġpage Ġwith Ġdetail Ġof Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġmodel ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid Ġ ĠUUID Ġof Ġshowing Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġpage Ġwith Ġdetail Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ { uuid }/ detail ") ĊĠĠĠ Ġfun Ġshow Detail ( model : ĠModel , Ġ@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġmusic Connector . get ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" music ", Ġmusic ) ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" title ", Ġ" Music Ġdetail ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" music / detail " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġpage Ġfor Ġadding Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġmodel ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġpage Ġfor Ġadding Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ add ") ĊĠĠĠ Ġfun Ġshow Add ( model : ĠModel ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= ĠMusic FO ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwiki En Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwiki Cz Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Count Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Form View ( model Ġ= Ġmodel , Ġmusic Ġ= Ġmusic , Ġtitle Ġ= Ġ" Add Ġmusic ", Ġaction Ġ= Ġ" add ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġadding Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġ Ġmodel ĊĠĠĠĠ Ġ* Ġ@ param Ġmusic Ġ ĠFO Ġfor Ġmusic ĊĠĠĠĠ Ġ* Ġ@ param Ġerrors Ġerrors ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic Ġ( no Ġerrors ) Ġor Ġview Ġfor Ġpage Ġfor Ġadding Ġmusic Ġ( errors ) ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif ĠUUID Ġisn 't Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ["/ add "], Ġparams Ġ= Ġ[" create "]) ĊĠĠĠ Ġfun Ġprocess Add ( model : ĠModel , Ġ@ Model Attribute (" music ") Ġ@ Valid Ġmusic : ĠMusic FO , Ġerrors : ĠErrors ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( music . uuid Ġ== Ġnull ) Ġ{ Ġ" UUID Ġmust Ġbe Ġnull ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( errors . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Form View ( model Ġ= Ġmodel , Ġmusic Ġ= Ġmusic , Ġtitle Ġ= Ġ" Add Ġmusic ", Ġaction Ġ= Ġ" add ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmusic Connector . add ( request Ġ= Ġmapper . map Request ( source Ġ= Ġmusic )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCancel Ġadding Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ["/ add "], Ġparams Ġ= Ġ[" cancel "]) ĊĠĠĠ Ġfun Ġcancel Add (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShows Ġpage Ġfor Ġediting Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġmodel ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid Ġ ĠUUID Ġof Ġediting Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġpage Ġfor Ġediting Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ edit /{ uuid }") ĊĠĠĠ Ġfun Ġshow Edit ( model : ĠModel , Ġ@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmusic Ġ= Ġmusic Connector . get ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Form View ( model Ġ= Ġmodel , Ġmusic Ġ= Ġmapper . map ( source Ġ= Ġmusic ), Ġtitle Ġ= Ġ" Edit Ġmusic ", Ġaction Ġ= Ġ" edit ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġediting Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġ Ġmodel ĊĠĠĠĠ Ġ* Ġ@ param Ġmusic Ġ ĠFO Ġfor Ġmusic ĊĠĠĠĠ Ġ* Ġ@ param Ġerrors Ġerrors ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic Ġ( no Ġerrors ) Ġor Ġview Ġfor Ġpage Ġfor Ġediting Ġmusic Ġ( errors ) ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif ĠUUID Ġis Ġnull ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ["/ edit "], Ġparams Ġ= Ġ[" update "]) ĊĠĠĠ Ġfun Ġprocess Edit ( model : ĠModel , Ġ@ Model Attribute (" music ") Ġ@ Valid Ġmusic : ĠMusic FO , Ġerrors : ĠErrors ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( music . uuid Ġ!= Ġnull ) Ġ{ Ġ" UUID Ġmust n 't Ġbe Ġnull ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( errors . has Errors ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Form View ( model Ġ= Ġmodel , Ġmusic Ġ= Ġmusic , Ġtitle Ġ= Ġ" Edit Ġmusic ", Ġaction Ġ= Ġ" edit ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmusic Connector . update ( uuid Ġ= Ġmusic . uuid , Ġrequest Ġ= Ġmapper . map Request ( source Ġ= Ġmusic )) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġediting Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ["/ edit "], Ġparams Ġ= Ġ[" cancel "]) ĊĠĠĠ Ġfun Ġcancel Edit (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġd uplic ating Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠUUID Ġof Ġd uplic ating Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ duplicate /{ uuid }") ĊĠĠĠ Ġfun Ġprocess Duplicate (@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . duplicate ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġremoving Ġmusic . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠUUID Ġof Ġremoving Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ remove /{ uuid }") ĊĠĠĠ Ġfun Ġprocess Remove (@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . remove ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġmoving Ġmusic Ġup . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠUUID Ġof Ġmoving Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ move Up /{ uuid }") ĊĠĠĠ Ġfun Ġprocess Move Up (@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . move Up ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġmoving Ġmusic Ġdown . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠUUID Ġof Ġmoving Ġmusic ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ move Down /{ uuid }") ĊĠĠĠ Ġfun Ġprocess Move Down (@ PathVariable (" uuid ") Ġuuid : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . move Down ( uuid Ġ= Ġuuid ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġupdating Ġpositions . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġview Ġfor Ġredirect Ġto Ġpage Ġwith Ġlist Ġof Ġmusic ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ GetMapping ("/ update ") ĊĠĠĠ Ġfun Ġprocess Update Positions (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmusic Connector . update Positions () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠLIST _ RE DIRECT _ URL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġpage 's Ġview Ġwith Ġform . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmodel Ġ Ġmodel ĊĠĠĠĠ Ġ* Ġ@ param Ġmusic Ġ ĠFO Ġfor Ġmusic ĊĠĠĠĠ Ġ* Ġ@ param Ġtitle Ġ Ġpage 's Ġtitle ĊĠĠĠĠ Ġ* Ġ@ param Ġaction Ġaction ĊĠĠĠĠ Ġ* Ġ@ return Ġpage 's Ġview Ġwith Ġform ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Form View ( model : ĠModel , Ġmusic : ĠMusic FO , Ġtitle : ĠString , Ġaction : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" music ", Ġmusic ) ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" title ", Ġtitle ) ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" action ", Ġaction ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" music / form " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRedirect ĠURL Ġto Ġlist ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLIST _ RE DIRECT _ URL Ġ= Ġ" redirect :/ music / list " ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ