From 5f76f74c16c00a9f0d2c9dda52eb2d8b1ef07574 Mon Sep 17 00:00:00 2001 From: MKDrwal Date: Sun, 29 Dec 2019 18:46:57 +0100 Subject: [PATCH] Add admission to download files --- src/main/java/ftp/sar/FileChooser.java | 17 +++++++ .../sar/controller/ServerPanelController.java | 14 ++++++ .../java/ftp/sar/server/ServerConnector.java | 42 ++++++++++++++++++ .../ftp/sar/server/ServerConnector.class | Bin 3447 -> 4725 bytes 4 files changed, 73 insertions(+) create mode 100644 src/main/java/ftp/sar/FileChooser.java diff --git a/src/main/java/ftp/sar/FileChooser.java b/src/main/java/ftp/sar/FileChooser.java new file mode 100644 index 0000000..dbaaea6 --- /dev/null +++ b/src/main/java/ftp/sar/FileChooser.java @@ -0,0 +1,17 @@ +package ftp.sar; + +import javax.swing.*; + +public class FileChooser { + + public String getPathToSave() { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + fileChooser.setDialogTitle("Choose file destination"); + fileChooser.setAcceptAllFileFilterUsed(false); + fileChooser.showSaveDialog(null); + + return fileChooser.getSelectedFile().toString(); + } + +} diff --git a/src/main/java/ftp/sar/controller/ServerPanelController.java b/src/main/java/ftp/sar/controller/ServerPanelController.java index 8da08e3..f8c3626 100644 --- a/src/main/java/ftp/sar/controller/ServerPanelController.java +++ b/src/main/java/ftp/sar/controller/ServerPanelController.java @@ -1,5 +1,6 @@ package ftp.sar.controller; +import ftp.sar.FileChooser; import ftp.sar.builder.FilePaneBuilder; import ftp.sar.exception.CannotConnectException; import ftp.sar.server.Server; @@ -8,6 +9,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.input.MouseEvent; import javafx.scene.layout.FlowPane; import javafx.scene.layout.Pane; @@ -61,10 +63,22 @@ public class ServerPanelController implements Initializable { for (String filename : this.server.getFileList()) { var pane = this.filePaneBuilder.getPane(filename); + pane.addEventHandler(MouseEvent.MOUSE_CLICKED, mouseEvent -> this.getFile(filename)); + this.fileContainer.getChildren().add(pane); } } + private void getFile(String filename) { + FileChooser fileChooser = new FileChooser(); + String path = fileChooser.getPathToSave(); + + this.server.getConnector().getFile(filename, path); + + System.out.println(filename); + + } + @Override public void initialize(URL url, ResourceBundle resourceBundle) { } diff --git a/src/main/java/ftp/sar/server/ServerConnector.java b/src/main/java/ftp/sar/server/ServerConnector.java index 3af5811..3814c51 100644 --- a/src/main/java/ftp/sar/server/ServerConnector.java +++ b/src/main/java/ftp/sar/server/ServerConnector.java @@ -77,4 +77,46 @@ public class ServerConnector { } } + + public void getFile(String filename, String path) { + File file = new File(path + "\\" + filename); + try { + this.sendRequest("FTP_" + filename); + } catch (CannotConnectException e) { + e.printStackTrace(); + } + + DataInputStream dataInputStream = null; + char[] buffer = new char[512]; + try { + dataInputStream = new DataInputStream(this.server.getSocket().getInputStream()); + InputStreamReader inputStreamReader = new InputStreamReader(dataInputStream); + BufferedReader reader = new BufferedReader(inputStreamReader); + + reader.read(buffer); + + String l = ""; + + for (char c: buffer) { + if (Character.isDigit(c)) { + l += c; + } + } + //TODO: Finish getting file +// long lengthOFFile = Long.parseLong(l.trim()); +// +// +// byte[] fileBuffer = new byte[4096]; +// +// do { +// dataInputStream.read(fileBuffer); +// lengthOFFile -= 4096; +// } while (lengthOFFile > 0); + + System.out.println(l); + } catch (IOException e) { + e.printStackTrace(); + } + + } } diff --git a/target/classes/ftp/sar/server/ServerConnector.class b/target/classes/ftp/sar/server/ServerConnector.class index cbf1ec0bc8ce52c460266618e3b11104236ac187..27cef737696be042dcddbb75b922d3860224da6a 100644 GIT binary patch delta 2101 zcmZuy32;+I82(AP<+F+ZOGzE%iQ1Jj1 zlm{v*qM)FlB8O>hIYdDb5Aa4s1Vur`W5#iG9JGF$0^&#}v-|Jve}4bB`+o2AThGXW zzgu?!$i*)j24l8{IhbqbvPoc`1`BSMi}`Z6Mc`Hqs?>>Kfr{HSZr(0%hg>hza3}84 z5Qn=3?$MAW=S3P)uviXDRNO0V?~}SqlNoTifT5vN1S#;#vJ)_}SY?K*ovN9fj ziLm22Jg?yeY}Sw|Bfn@C*s^7p+hi#b*lL_Hom54YKU^57@f$})x{+;n#1)4_fne28 z*CYkmUSqE{t7xbKrAC2X;}2Gat0xpnb#9GOpv|D@X`C^`A5vf{^C(c|PS96N1xvjz zT&*D9JJUDYmlLSVk#<7`g2r+4z!VR*32fK#5~4bW;VK2)jAKgI{GJ1Jc+jk4IIh;= z27{->95jXlH8~?gAzza>&=3}A(eW}`6~v7yD5)Ij^;Q;+_7)WDxB(T$VoOG18+Hin z)UgY@rN>u{s3mux2YYn9iq{lC$6oBy@j5CLBzo%V!VTe&uYR0ATwOQ4A;E?>RP5LB zCJq?gt(TbJ!Zu@=wTt>T-jUwkHGI~=$sQckaR~3}cpo3=_>elAta%gk3kz29k@WJh zw5m|?iCi2O_*BPd_*};kd?9dD$Co%J6FV;Om5#4*Lf{)6-^$#&N?5kV*)}WYlQ?DU z7QfmRn3Zxx!C>RKNRdtJb*^b0Sl9T1RXJz36j%#OiYlp{DYYZ6i>Y)V95c(S_Jw@Y z!m^wI*E^!9dqKX3sxzx*ZV>Z{th`Ut0S&)O6b#E zq>eSK%;OqO=>N4UZfXeo>EB$}$e3vz2INf<2^nTNeqZf*HvD&+xz4_HsqcMhO`9_m=nEDePl@X~wkq^Lh6k;sAyos4uj&T@I z?Hnw^1QgL?Fc#oi>Y15A6N*v7=wlGXb(jPz*=@mOTu%#N_t~hWl-*Fa!4MWU8GfFEP@RLrgBi?9flN`rG*=)~y&#-|Dpd10 zpDAIYZN7l=aN0L^W2TB7KuxGhO0?6A76ZHOz)-VPB( zd=v@INOW7;kW}ilG$YwBTZY2 z9!`6jW8fe?O>aT}Rfu=0X?iQ11U8~BbSN9zk2uvRa$0a%u01IcJ5;yBX>mHD7%(~A zo{G!;x%PCseZ}hb(_1l6s$MCRwK;834BA3a66h;~0QbW_>}TK2C}6EK38dsi0=w)a zd>QO=R|3|9fMsF|waXD1!Jdp|S0)kr3Zg!hc+V%&3yJMA$}8z+4Ql!3*Yj1MMW901 zi7*4rVW>tNz-$~Ol_dR^BAx-P3>6^U^Z8YhMASLXi_y=>6fs z6KcrV_53i^l8p|!m2Uhb277kC;fH808!q?iDap$Bu&PJn^$|RrN$$Jb(&g_Eb9{<+0NcjP?237-x!Z>NLJNE zi|Xs+jj^hRq~@66I42Yt6HDfl7sX=brITYNvklXk;crjvoOzNKjc+)`X*=89^}(D_F1HPLxNEq_eZvERUI~tGjp~mo#xcrI{j%rDG&J8P5daEToYV!8%N#mWfOvmDiF@mRz>V`@gJHCCm)h-l{pfq8oNsA*x`U;`kVw=z}?G}sBg7*E}gccB#we)1BNDh!A zJ+ql3qI#3bTw!vA+!ZPFrHTmuw}4_6h){(Ur3uJa-N*fp&S9Yx0xV+jUkMKVB?`%z XBi{ZxJmEP{>BI&}T$!~|{+s>)X*!&m