import Ġit . z iel ke . moji . Socket Client č Ċ import Ġjavafx . application . Platform č Ċ import Ġjavafx . event . ActionEvent č Ċ import Ġjavafx . event . EventHandler č Ċ import Ġjavafx . f xml . FXML č Ċ import Ġjavafx . scene . Parent č Ċ import Ġjavafx . scene . control .* č Ċ import Ġjavafx . scene . control . cell . PropertyValue Factory č Ċ import Ġjavafx . scene . layout .* č Ċ import Ġjavafx . scene . paint . Color č Ċ import Ġjavafx . stage . Popup č Ċ import Ġjavafx . stage . Stage č Ċ import Ġorg . apache . commons . io . FileUtils č Ċ import Ġjava . io . File č Ċ import Ġjava . util .* čĊčĊč Ċ /* čĊ Ġ* Ġ@ created Ġ 2 8 . Ġ 0 1 . Ġ 2 0 2 2 čĊ Ġ* Ġ@ project ĠIntelliJ ĠIDEA čĊ Ġ* Ġ@ author ĠD orm age č Ċ */ čĊĠĠĠĠč Ċ class ĠSubmit Cont ro ler Ġ( private Ġval Ġstage : ĠStage , Ġprivate Ġval Ġmain : ĠMain ){ čĊĠĠĠ Ġval Ġdata Manager : ĠData Manager Ġ= Ġmain . data Manager čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain Pane Ġ: ĠAnchor Pane čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġloading Status Log Ġ: ĠTextField čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġload Progress Ġ: ĠProgress Bar čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġloading Title Ġ: ĠLabel čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubmissions : ĠTable View < Preview > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Id : ĠTable Column < Preview , Int > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Name : ĠTable Column < Preview , String > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Url : ĠTable Column < Preview , String > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Files : ĠTable Column < Preview , Int > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs Error : ĠTable Column < Preview , String > čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpopup Pane : ĠBorder Pane čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġfun Ġinitialize (){ čĊĠĠĠĠĠĠĠ Ġs Id . setCellValue Factory Ġ( ĠProperty Value Factory < Preview , Int >(" Id ")) čĊĠĠĠĠĠĠĠ Ġs Name . setCellValue Factory Ġ( ĠProperty Value Factory < Preview , String >(" Name ")) čĊĠĠĠĠĠĠĠ Ġs Url . setCellValue Factory Ġ( ĠProperty Value Factory < Preview , String >(" Url ")) čĊĠĠĠĠĠĠĠ Ġs Files . setCellValue Factory Ġ( ĠProperty Value Factory < Preview , Int >(" Files ")) čĊĠĠĠĠĠĠĠ Ġs Error . setCellValue Factory Ġ( ĠProperty Value Factory < Preview , String >(" Error ")) čĊĠĠĠĠĠĠĠ Ġsubmissions . items . addAll ( data Manager . pre views ) čĊĠĠĠĠĠĠĠ Ġsubmissions . set Row Factory Ġ{ Ġtv Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable Row < Preview ?> () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate Item ( item : ĠPreview ?, Ġempty : ĠBoolean ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . update Item ( item , Ġempty ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . name . isEmpty ()) Ġ"- fx - background - color : Ġ# FFD 2 D 2 ;" čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( item . files . size Ġ== Ġ 0 ) Ġ"- fx - background - color : Ġ# e 8 8 9 2 a ;" čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( item . error . isNotEmpty ()) Ġ"- fx - background - color : Ġ# F EE FB 3 ;" čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ" Ġ\" - fx - background - color : Ġ# B DE 5 F 8 ;\ "" čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġfun Ġopen Settings Popup (){ čĊĠĠĠĠĠĠĠ Ġval Ġnew Ġ: ĠParent Ġ= Ġmain . load Component (" Settings Screen . f xml ", Ġthis @ Submit Cont ro ler ) čĊĠĠĠĠĠĠĠ Ġval Ġpopup : ĠPopup Ġ= ĠPopup () čĊĠĠĠĠĠĠĠ Ġpopup . scene . fill = ĠColor . web (" FFFFFF ") čĊĠĠĠĠĠĠĠ Ġpopup . width Ġ= Ġ 4 0 0 . 0 čĊĠĠĠĠĠĠĠ Ġpopup . height Ġ= Ġ 3 0 0 . 0 čĊĠĠĠĠĠĠĠ Ġpopup . is Auto Fix Ġ= Ġtrue ; čĊĠĠĠĠĠĠĠ Ġpopup . is Auto Hide Ġ= Ġtrue ; čĊĠĠĠĠĠĠĠ Ġpopup . is Hide On Escape Ġ= Ġtrue ; čĊĠĠĠĠĠĠĠ Ġpopup Pane . border Ġ= ĠBorder ( Border Stroke ( Color . GRE Y , ĠBorder Stroke Style . SOLID , ĠCor ner Rad ii . EMPTY , ĠBorder Widths . DEFAULT )) čĊĠĠĠĠĠĠĠ Ġpopup . content . addAll ( new ) čĊĠĠĠĠĠĠĠ Ġpopup . show ( stage ) čĊĠĠĠĠĠĠĠ Ġval Ġclose : ĠButton Ġ= Ġnew . lookup ("# settings Done ") Ġas ĠButton čĊĠĠĠĠĠĠĠ Ġval Ġevent : ĠEventHandler < ActionEvent ?> Ġ= ĠEventHandler < ActionEvent ?> Ġ{ Ġpopup . hide () Ġ} čĊĠĠĠĠĠĠĠ Ġclose . on Action Ġ= Ġevent čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ FXML čĊĠĠĠ Ġprivate Ġfun Ġupload Assignments Ġ(){ čĊĠĠĠĠĠĠĠ Ġval Ġnew Ġ: ĠParent Ġ= Ġmain . load Component (" Loading Files . f xml ", Ġthis @ Submit Cont ro ler ) čĊĠĠĠĠĠĠĠ Ġmain Pane . children . set All ( new ) čĊĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ Ġloading Title . text Ġ= Ġ" Up loading Ġfiles " Ġ}) čĊĠĠĠĠĠĠĠ ĠThread () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsocket Client Ġ= ĠSocket Client () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Client . userID Ġ= Ġ" 6 3 2 1 1 3 4 3 1 " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Client . language Ġ= Ġ" java " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Client . run () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Progress Ġ= Ġ 0 čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// upload Ġ. java Ġfiles čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= ĠFileUtils . list Files ( File ( data Manager . url ), ĠarrayOf (" java "), Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . forEach Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Loading Progress (" Up loading Ġ$ it Ġ... ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Loading Ġfile Ġ$ it ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewData Ġ= Ġit . read Text (). replace ("[ ^ \\ x 0 0 - \\ x 7 F ]+ ". to Regex (), Ġ"") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Text ( new Data ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Client . upload File ( it ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Progress . progress Ġ= Ġcurrent Progress . toDouble () Ġ/ Ġfiles . size čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Progress ++ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Socket Ġstatus Ġ${ socket Client . socket . isConnected } Ġ ĠStage : Ġ${ socket Client . current Stage }") čĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ Ġlog Loading Progress (" Waiting Ġfor Ġresults ...") Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ Ġloading Title . text Ġ= Ġ" Waiting Ġfor Ġserver " Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimer (). schedule At Fixed Rate ( object Ġ: ĠTimer Task () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Progress . progress Ġ= Ġ( load Progress . progress Ġ+ Ġ 0 . 1 ) Ġ% 1 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( socket Client . current Stage Ġ== Ġit . z iel ke . moji . Stage . AW A IT ING _ END ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 0 , 1 0 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsocket Client . send Query (); čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġsocket Client . result URL čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( results ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Manager . parse Mo ss Result ( results ) čĊĠĠĠĠĠĠĠ Ġ}. start () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġlog Loading Progress ( progress : ĠString ){ čĊĠĠĠĠĠĠĠ ĠPlatform . run Later ( Runnable Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Status Log . text Ġ= Ġprogress čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊč Ċ } čĊ