package Ġcom . silver box soft . dynamodb tool . controller . input dialog Ċ Ċ import Ġjavafx . scene . layout . H Box Ċ import Ġcom . silver box soft . dynamodb tool . utils . D ynamo Db Utils Ċ import Ġsoftware . amazon . aw ssdk . core . Sdk Bytes Ċ import Ġjava . util . stream . Collectors Ċ import Ġcom . silver box soft . dynamodb tool . classes . D ynamo Db ColumnType Ċ import Ġjava . math . BigDecimal Ċ import Ġjavafx . scene . Node Ċ import Ġjavafx . scene . control .* Ċ import Ġsoftware . amazon . aw ssdk . services . dynamodb . model .* Ċ import Ġjava . util . function . Function Ċ Ċ abstract Ġclass ĠAbs D ynamo Db Document Input Dialog < T >( d ynamo Db Record : ĠT , Ġdialog Title : ĠString ) ĊĠĠĠ Ġ: ĠAbs D ynamo Db Input Dialog < T >( d ynamo Db Record , Ġdialog Title ) Ġ{ ĊĠĠĠ Ġval Ġtype ComboBox : ĠCombo Box < String ?> Ġ= ĠCombo Box < String ?> () ĊĊĠĠĠ Ġ/* Ċĉ Ġ* Ġfor Ġopen Ġattribute Ġedit Ġdialog Ċĉ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġget Attribute From Edit Button Id ( btn Id : ĠString ): ĠAttribute Value ĊĠĠĠ Ġabstract Ġfun Ġget Title Append Str ( btn Id : ĠString ): ĠString ĊĠĠĠ Ġabstract Ġfun Ġcall Back Set New Attribute ( btn Id : ĠString , Ġattr Val : ĠAttribute Value ) ĊĊĠĠĠ Ġ/* Ċĉ Ġ* Ġfor Ġadd Ġattribute Ġbutton Ċĉ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġadd Attr Edit Button Id : ĠString ĊĠĠĠ Ġabstract Ġfun Ġon Add Type Combo Sel Changed ( oldValue : ĠString ?, ĠnewValue : ĠString ?) ĊĊĠĠĠ Ġ/* Ċĉ Ġ* ĠĊĉ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġact Open Edit Dialog ( btn Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġthis . title Ġ+ Ġ" Ġ> Ġ" Ġ+ Ġget Title Append Str ( btn Id ) ĊĠĠĠĠĠĠĠ Ġvar Ġattr Val Ġ= Ġget Attribute From Edit Button Id ( btn Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( btn Id Ġ== Ġadd Attr Edit Button Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattr Val Ġ= Ġselected Add Type . init Value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( attr Val . has Ss ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠD ynamo Db String SetInput Dialog ( attr Val . ss (), Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rec Ġ= Ġdialog . show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Rec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Value Ġ= ĠAttribute Value . builder (). ss ( new Rec . get ()). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back Set New Attribute ( btn Id , Ġattr Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Val . has Ns ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset List Ġ= Ġattr Val . ns (). stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Function < String , ĠBigDecimal > Ġ{ Ġstr val : ĠString ? Ġ-> ĠD ynamo Db Utils . Companion . get BigDecimal ( str val ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠD ynamo Db Number SetInput Dialog ( set List , Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rec Ġ= Ġdialog . show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Rec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Str List Ġ= Ġnew Rec . get (). stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Function < BigDecimal ?, ĠString > Ġ{ Ġbd : ĠBigDecimal ? Ġ-> ĠD ynamo Db Utils . Companion . getNum Str ( bd ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Value Ġ= ĠAttribute Value . builder (). ns ( num Str List ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back Set New Attribute ( btn Id , Ġattr Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Val . has Bs ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠD ynamo Db Binary SetInput Dialog ( attr Val . bs (), Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rec Ġ= Ġdialog . show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Rec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Value Ġ= ĠAttribute Value . builder (). bs ( new Rec . get ()). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back Set New Attribute ( btn Id , Ġattr Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Val . has M ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠD ynamo Db Map Input Dialog ( attr Val . m (), Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rec Ġ= Ġdialog . show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Rec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Value Ġ= ĠAttribute Value . builder (). m ( new Rec . get ()). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back Set New Attribute ( btn Id , Ġattr Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( attr Val . has L ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠD ynamo Db List Input Dialog ( attr Val . l (), Ġtitle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . initialize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Rec Ġ= Ġdialog . show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Rec . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattr Value Ġ= ĠAttribute Value . builder (). l ( new Rec . get ()). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back Set New Attribute ( btn Id , Ġattr Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ċĉ Ġ* Ġutil Ġmethod Ċĉ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġget Attribute From Node ( value Node : ĠNode ): ĠAttribute Value Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Node Ġis ĠH Box ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw k Box Ġ= Ġvalue Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw k Node Ġ= Ġw k Box . children [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( wk Node Ġis ĠRadio Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Value . builder (). bool ( Abs D ynamo Db Input Dialog . Companion . getBoolean Value ( wk Box )). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= Ġw k Node Ġas ĠButton ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Attribute From Edit Button Id ( button . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Node Ġis ĠTextField ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġval TextField Ġ= Ġvalue Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġval TextField . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . STR FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAttribute Value . builder (). s ( val TextField . text ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . NUM FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAttribute Value . builder (). n ( val TextField . text ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . BIN FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdk Bytes : ĠS dk Bytes Ġ= ĠD ynamo Db Utils . Companion . get Sdk Bytes From Base 6 4 String ( val TextField . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAttribute Value . builder (). b ( sdk Bytes ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Node Ġis ĠLabel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAttribute Value . builder (). nul ( true ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAttribute Value . builder (). nul ( true ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġcheck Value Node ( value Node : ĠNode ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Node Ġis ĠTextField ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġval TextField Ġ= Ġvalue Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġval TextField . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . STR FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . NUM FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD ynamo Db Utils . Companion . is Numeric Str ( val TextField . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id . startsWith ( Abs D ynamo Db Input Dialog . Companion . BIN FL D _ ID _ PREFIX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD ynamo Db Utils . Companion . is Base 6 4 Str ( val TextField . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġuse Ġfor Ġadd Ġbutton ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġselected Add Type : ĠD ynamo Db ColumnType ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsel Str Ġ= Ġtype ComboBox . value Ġ?: Ġreturn ĠD ynamo Db ColumnType . UNKNOWN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠD ynamo Db ColumnType . Companion . getColumn Type ( sel Str ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Type ComboBox () Ġ{ ĊĠĠĠĠĠĠĠ Ġtype ComboBox . is Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtype ComboBox . items . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( type Ġin ĠD ynamo Db ColumnType . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ComboBox . items . add ( type . display Str ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtype ComboBox . value Ġ= Ġtype ComboBox . items [ 0 ] ĊĠĠĠĠĠĠĠ Ġtype ComboBox . value Property (). addListener Ġ{ Ġ_, ĠoldValue , ĠnewValue Ġ-> Ġon Add Type Combo Sel Changed ( oldValue , ĠnewValue ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠVALID ATION _ MSG _ NO _ ATTR _ VALUE Ġ= Ġ" Please Ġset Ġattribute Ġvalue ." ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Type ComboBox () ĊĠĠĠ Ġ} Ċ }