package Ġcom . j ss . spr ings hel lex ample . framework . cli . command Ċ Ċ import Ġcom . j ss . spr ings hel lex ample . core . model . Cli User Ċ import Ġcom . j ss . spr ings hel lex ample . framework . cli . helper . Input Reader Ċ import Ġcom . j ss . spr ings hel lex ample . framework . cli . helper . Shell Helper Ċ import Ġcom . j ss . spr ings hel lex ample . framework . use cases . Use Cases Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . shell . standard . Shell Component Ċ import Ġorg . springframework . shell . standard . Shell Method Ċ import Ġorg . springframework . shell . standard . Shell Option ĊĊ Ċ @ Shell Component Ċ class ĠUser Command Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġuse Cases : ĠUse Cases ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġshell Helper : ĠShell Helper ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġinput Reader : ĠInput Reader ĊĊĠĠĠ Ġ@ Shell Method (" Create Ġnew Ġuser Ġwith Ġsupplied Ġusername ") ĊĠĠĠ Ġfun Ġcreate User (@ Shell Option ("- U ", Ġ"-- username ") Ġusername : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Cases . exist User ( username )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print Error ( String . format (" User Ġwith Ġusername ='% s ' Ġalready Ġexists Ġ--> ĠAB ORT ING ", Ġusername )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠCli User ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfullName Ġ= Ġinput Reader . prompt (" Full Ġname ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! fullName . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . fullName Ġ= ĠfullName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print Warning (" User 's Ġfull Ġname ĠCAN ĠNOT Ġbe Ġempty Ġstring ? ĠPlease Ġenter Ġvalid Ġvalue !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( user . fullName . isNull OrEmpty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġinput Reader . prompt (" Password ", Ġ" secret ", Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! password . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . password Ġ= Ġpassword ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print Warning (" Password ' CAN ĠNOT Ġbe Ġempty Ġstring ? ĠPlease Ġenter Ġvalid Ġvalue !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( user . password . isNull OrEmpty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print Info ("\ n Creating Ġnew Ġuser :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUsername : Ġ${ user . username } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print (" Password : Ġ" Ġ+ Ġuser . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print (" Full ĠName : Ġ" Ġ+ Ġuser . fullName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print (" Gender : Ġ" Ġ+ Ġuser . gender ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSuper user : Ġ${ user . superuser . toString ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated User Ġ= Ġuse Cases . add User ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshell Helper . print Success (" Created Ġuser Ġwith Ġid =" Ġ+ Ġcreated User . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }