From fba31209cfa025ed2d5cb3369afde7f2d34eccd9 Mon Sep 17 00:00:00 2001 From: hocine <ferhat.hocine.etu@univ-lille.fr> Date: Thu, 4 Feb 2021 00:26:35 +0100 Subject: [PATCH] rendu final --- README.md | 157 +++++++++++++++++- projet1.sr/bin/.project | 23 --- .../org.eclipse.core.resources.prefs | 2 - projet1.sr/bin/pom.xml | 75 --------- .../java/systemes/repartie/tree/ftp/App.class | Bin 1134 -> 0 bytes .../systemes/repartie/tree/ftp/AppTest.class | Bin 1303 -> 0 bytes projet1.sr/doc/Diagram.jpg | Bin 0 -> 54865 bytes projet1.sr/doc/Diagram.ucls | 66 ++++++++ projet1.sr/pom.xml | 17 +- .../repartie/tree/ftp/Arbre/Arbre.java | 28 +++- .../tree/ftp/FtpConnection/Connection.java | 127 +++++++++----- .../java/systemes/repartie/tree/ftp/Main.java | 16 +- .../ConnectionParametre.java | 10 +- .../ftp/FtpConnection/ConnectionTest.java | 37 +++++ .../ConnectionParametreTest.java | 28 ++++ .../repartie/tree/ftp/Arbre/Arbre.class | Bin 2905 -> 0 bytes .../tree/ftp/FtpConnection/Connection.class | Bin 6088 -> 0 bytes .../systemes/repartie/tree/ftp/Main.class | Bin 1532 -> 0 bytes .../ConnectionParametre.class | Bin 988 -> 0 bytes .../target/maven-archiver/pom.properties | 4 - .../compile/default-compile/createdFiles.lst | 4 - .../compile/default-compile/inputFiles.lst | 4 - .../default-testCompile/createdFiles.lst | 1 - .../default-testCompile/inputFiles.lst | 1 - projet1.sr/target/projet1.sr-1.0-SNAPSHOT.jar | Bin 9174 -> 0 bytes ...EST-systemes.repartie.tree.ftp.AppTest.xml | 61 ------- .../systemes.repartie.tree.ftp.AppTest.txt | 4 - .../systemes/repartie/tree/ftp/AppTest.class | Bin 499 -> 0 bytes 28 files changed, 434 insertions(+), 231 deletions(-) delete mode 100644 projet1.sr/bin/.project delete mode 100644 projet1.sr/bin/.settings/org.eclipse.core.resources.prefs delete mode 100644 projet1.sr/bin/pom.xml delete mode 100644 projet1.sr/bin/src/main/java/systemes/repartie/tree/ftp/App.class delete mode 100644 projet1.sr/bin/src/test/java/systemes/repartie/tree/ftp/AppTest.class create mode 100644 projet1.sr/doc/Diagram.jpg create mode 100644 projet1.sr/doc/Diagram.ucls create mode 100644 projet1.sr/src/test/java/systemes/repartie/tree/ftp/FtpConnection/ConnectionTest.java create mode 100644 projet1.sr/src/test/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametreTest.java delete mode 100644 projet1.sr/target/classes/systemes/repartie/tree/ftp/Arbre/Arbre.class delete mode 100644 projet1.sr/target/classes/systemes/repartie/tree/ftp/FtpConnection/Connection.class delete mode 100644 projet1.sr/target/classes/systemes/repartie/tree/ftp/Main.class delete mode 100644 projet1.sr/target/classes/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.class delete mode 100644 projet1.sr/target/maven-archiver/pom.properties delete mode 100644 projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst delete mode 100644 projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst delete mode 100644 projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst delete mode 100644 projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst delete mode 100644 projet1.sr/target/projet1.sr-1.0-SNAPSHOT.jar delete mode 100644 projet1.sr/target/surefire-reports/TEST-systemes.repartie.tree.ftp.AppTest.xml delete mode 100644 projet1.sr/target/surefire-reports/systemes.repartie.tree.ftp.AppTest.txt delete mode 100644 projet1.sr/target/test-classes/systemes/repartie/tree/ftp/AppTest.class diff --git a/README.md b/README.md index db7b30e..86ffb8e 100644 --- a/README.md +++ b/README.md @@ -1 +1,156 @@ -Ferhat HOCINE GL02 \ No newline at end of file +Projet nº1 - Application «Tree FTP» +Ferhat HOCINE GL02 +2021 + +*** 1/ Introduction +I)objectif: +L'Application «Tree FTP» a pour résultat l'affichage de l'arborescence d'un répertoire accessible via le protocole applicatif (FTP) depuis un shell graçe a une commande. +cette commande prend en paramètre obligatoirement l'adresse du serveur FTP + en option un nom d'utilisateur et un mot de passe + +II)exécution: +Dans le fichier racine on exécute la commande : +->>> mvn package +//pour compliler le projet +puis la commande : +->>> mvn javadoc:javadoc +//pour générer la documentation: +puis la commande : +java -jar target/projet1.sr-1.0-SNAPSHOT.jar ftp.ubuntu.com +//pour lancer l'application sur le server FTP ubuntu +ou la commande : +java -jar target/projet1.sr-1.0-SNAPSHOT.jar ftp.free.fr +//pour le server FTP Free + + +*** 2/ Architecture +la gestion d'erreur: +La plus part des méthodes de la classe connection renvoie IOException avec un message en cas d'erreur. +exemple: +la méthode envoyerPWD() qui envoie la commande "PWD" + + public void envoyerPWD() throws IOException { + if (this.socket==null) { + System.out.println("Erreur connection FTP Server !!"); + } + else { + printer.write("PWD\r\n"); + printer.flush(); + try { + String r = this.bfR.readLine(); + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } + } + } + +Dans la méthode envoyerPWD lors de la lecture de la réponse par le buffer reader en cas de IOException il sera attraper par le catch et renvera un new IOException avec le message "Buffer reader error". +la capture d'erreure est de même pour toutes les méthode de la classe connection + + +*** 3/ Parcours du code (code samples) + + +a) la méthode envoyerCWD(String dossier) de la classe Connection:: + +cette méthode utilise le String dossier passé en paramètre pour envoyé un cammande CWD +dossier afin de savoir si on peut accédé ou dossier dant le nom est passé en paramètre ou l'accès est interdit et la réponse est renvoyé sous forme de boolean par la méthode. + + public boolean envoyerCWD(String dossier) throws IOException { + if (this.socket==null) { + System.out.println("Erreur connection FTP Server !!"); + } + else { + try { + printer.write("CWD "+dossier+"\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + return r.startsWith("250"); + + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } + catch (NullPointerException e){ + return false; + } + } + return false; + } + + +b) la méthode envoyerPASV() de la classe Connection: +cette méthode envoie la commande PASV afin de passer au mode passive. en cas de réussite les information récupérer sont renvoyé dans le cas contraire l'exception est levée. + + public String envoyerPASV() throws IOException { + if (this.socket==null) { + System.out.println("Erreur connection FTP Server !!"); + return ""; + } + else { + try { + printer.write("PASV\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + return r; + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } + } + } + + +c) la méthode getAdressePasv() de la classe Connection: +cette méthode utilise le string (PASV) passé en paramètre qui représente une réponse de la commande PASV et extrait l'adresse IP compris dans le message. + + + public String getAdressePasv(String PASV) { + int i = PASV.indexOf("("); + int j = PASV.indexOf(")"); + PASV= PASV.substring(i+1,j); + String [] str=PASV.split(","); + String res=""; + for (i=0; i<4; i++) { + res+=str[i]+"."; + } + res=res.substring(0,res.length()-1); + return res; + } + +d) la méthode envoyerList(String adrs, int port) de la classe Connection: +cette methode utilise l'adresse ip et le port (passées en paramètre )extrait depuis la réponse de la commande PASV afin de retourner la liste des élements contenu dans la dossier encours + + public ArrayList<String> envoyerList(String adrs, int port) throws IOException { + ArrayList<String> Readl=new ArrayList<String>(); + if (this.socket==null) { + System.out.println("Erreur connection FTP Server !!"); + return Readl; + } + else { + try { + printer.write("LIST\r\n"); + printer.flush(); + Readl=this.newConnection(adrs, port); + String r = this.bfR.readLine(); + r = this.bfR.readLine(); + + return Readl; + } + + catch(IOException e) { + throw new IOException("Buffer reader error"); + } + } + } + + +e)la méthode NameOperation(String s)de la classe Arbre: +cette méthode transforme le string passé en paramètre qui représentre un ligne d'information d'un élement(fichier, dossier, lien ...) en liste avec les partie séparées et dans espace. + + public String[] NameOperation(String s){ + s=s.replaceAll(" ",","); + while(s.indexOf(",,")!=-1) { + s=s.replaceAll(",,",","); + } + return s.split(","); + } diff --git a/projet1.sr/bin/.project b/projet1.sr/bin/.project deleted file mode 100644 index 99705b3..0000000 --- a/projet1.sr/bin/.project +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>projet1.sr</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.m2e.core.maven2Builder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - <nature>org.eclipse.m2e.core.maven2Nature</nature> - </natures> -</projectDescription> diff --git a/projet1.sr/bin/.settings/org.eclipse.core.resources.prefs b/projet1.sr/bin/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0..0000000 --- a/projet1.sr/bin/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/<project>=UTF-8 diff --git a/projet1.sr/bin/pom.xml b/projet1.sr/bin/pom.xml deleted file mode 100644 index e2e9d1b..0000000 --- a/projet1.sr/bin/pom.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>systemes.repartie.tree.ftp</groupId> - <artifactId>projet1.sr</artifactId> - <version>1.0-SNAPSHOT</version> - - <name>projet1.sr</name> - <!-- FIXME change it to the project's website --> - <url>http://www.example.com</url> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.source>1.7</maven.compiler.source> - <maven.compiler.target>1.7</maven.compiler.target> - </properties> - - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.11</version> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> - <plugins> - <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> - <plugin> - <artifactId>maven-clean-plugin</artifactId> - <version>3.1.0</version> - </plugin> - <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> - <plugin> - <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.8.0</version> - </plugin> - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.22.1</version> - </plugin> - <plugin> - <artifactId>maven-jar-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <artifactId>maven-install-plugin</artifactId> - <version>2.5.2</version> - </plugin> - <plugin> - <artifactId>maven-deploy-plugin</artifactId> - <version>2.8.2</version> - </plugin> - <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> - <plugin> - <artifactId>maven-site-plugin</artifactId> - <version>3.7.1</version> - </plugin> - <plugin> - <artifactId>maven-project-info-reports-plugin</artifactId> - <version>3.0.0</version> - </plugin> - </plugins> - </pluginManagement> - </build> -</project> diff --git a/projet1.sr/bin/src/main/java/systemes/repartie/tree/ftp/App.class b/projet1.sr/bin/src/main/java/systemes/repartie/tree/ftp/App.class deleted file mode 100644 index fabf06dcaa22e940a7ccb4d65a676f7aecca7c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1134 zcmX^0Z`VEs1_nI_8FmIHMh2bYqGbKt#LPVXti-ZJ{o=~vlGNPPV*R4jg2bYd%vAl7 zqSRFVw2}gS$ASWO1{OvJ0kFcH#JqHU|D>$c<Pt^(Hk-`6%o00B24)S-Fh&Lz=lqmZ zb_PyH27ZKE*P^2QA`S*_Mke{tyrR_N{G77X6ousc+=9%U#FEVXJcWXy{G^=J++r&Q zF3ymQRE3htf>Z^N0eT?I^dOcgBq!$O<(DWVr7FM-(Npj&QOGP-$jnR0EJ{r-$*EK* zN=-{GO3h17O;JcI%Fk6ON-ZqSEJ{sL&`ZuqEG||^%gjkF#%fD&Nl|8AI@N7SNlng4 z1UaA}F*!RiJyk&o7SejKkk$i*v|d_Cfs#T>ermA-$d|c^CCM2IB^jv-sTBpO$t9^N z3J3#=lJ!6lrw0xqJjQWxdgd17WF}{pC={0#q!uY8=jRod6qP2I<QFMGLRCW(6o939 zDXD3hd7wbcFH%TJO-n4zDM41Pr{G&!Tmq8G%u7{B%mcX!Vla}CT%0(=P@yDWArTy} zT%5t+l!hgsxwsfO7<hRYSQ+>j8ALUFK;F{_r2u`1xz?a0#_yAvm+DuVo0M7<l9-f} z%E%z(lb@WJ6P8$%3F1QqSxPc8iy0a8d`L;<){G1+pnzp$;L(Wofm_PKAjZg$L`2$! z=)mGL;=Iquz!jWdT9lmXmI?9~hhsqjIEvXBq!=04AciwC@c3pH7iZ?Bhg24%7BeU^ zFfuSRfB+K%BLgb~8v`Q)I|BoQ2?H|&BLf2i*KP)mNFlE63_SZ87#Nrs_!$_$Y8V(8 z83Y&@7<eG67z7!F7#J8h8H5=`peAUcm>`P91WvFCOki`x!K4I(Gy?+z3j-sABmf=! BQU?G4 diff --git a/projet1.sr/bin/src/test/java/systemes/repartie/tree/ftp/AppTest.class b/projet1.sr/bin/src/test/java/systemes/repartie/tree/ftp/AppTest.class deleted file mode 100644 index ab615f83c553c2763942f81ba2e116d9a043b618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1303 zcmX^0Z`VEs1_nI_33di1Mh1i8qGbJ&)Z!BTti-ZJ{o=~vlGNPPV*R4jg2bYd%vAl7 zqSRFVw2}gS$AW^8)Z!9$1{OvJ0kGnn#JqHU|D>$c<Pt^(Hk-`6%o00B24)S-Fh&Lz z=lqmZb_PyH27ZKE*P^2QA`S*_MyABjyrR_N{G77X6ousc+=9%U#FEVXJcWXy{G^=J z++r&QF3ymQRE3n(<ebE!)D(q+#N_P6^i%~Um<#n_F4P0LP%o{dKuIAbKebpPFTX?~ zH?br+L!l%iRUx&aAT_xJ#ekw@J&=d>K<?7RV;mP}aAjUeVueB~$k{py#U+U)naK*7 zxdr(}CB+JfMX3t;c{!B|iDikIIf+R*sS25C3dQ-QMaiiOIjLo-ISQG@3Wj>73i(9} z=|!oDC8<RaPeDvj$S+D)NKVWHxi=|Q0TvuYDe=rL$jMC3EKw*fEl4d=NY2kIE-5Na zF3B%afW(J}Cdl&Ayp+_m%)HbTg|z%4g_P8^#L}D+WYu~KzNN(_Aeqd(RE5MmP;fyE zMlupT9KcQnM;F<FkXl@V#p?<s`3i{&C6xuKkU+>yEy>7FQAjK<PAw`4DJo6XNXpO8 zNlnbd;yF-UgLEoDlPMP$0|x^y4+AR$A0vaPh7TyR^}z`?xTGjEFWnlHNcnv-^HTjv zbCXhwLO>D7$ROmCpPZNzmROVt;zI>lN-{Ew85xXxNX;wOj0_^h8Tq9-DUNx?<*7yC znI#z@e{e8}GBR8zA`74<z@ZWFj0{}C;7s6_nUl)MzypmCaCT!*WME`qW&i;u21W)} z1~vvp26hGp1``Hm21W)32Cm%<9Fam?+ZlNFGcYhPG4L}mfYmTCFfs@*Ffi~yR51uL Y2r+=fgu$|yCWv4$fgh_0Vqkm30Uv&n*8l(j diff --git a/projet1.sr/doc/Diagram.jpg b/projet1.sr/doc/Diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8ef8beb796de1652f3435e18aafe0d93f714d9f GIT binary patch literal 54865 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lw>^iszr5a_fnZMGntI&*I1X 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 V*1-{BbKi+uMQJSB?P>r2CICX49aR7T literal 0 HcmV?d00001 diff --git a/projet1.sr/doc/Diagram.ucls b/projet1.sr/doc/Diagram.ucls new file mode 100644 index 0000000..175e692 --- /dev/null +++ b/projet1.sr/doc/Diagram.ucls @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<class-diagram version="1.2.4" icons="true" automaticImage="JPEG" always-add-relationships="false" + generalizations="true" realizations="true" associations="true" dependencies="false" nesting-relationships="true" + router="FAN"> + <class id="1" language="java" name="systemes.repartie.tree.ftp.Main" project="projet1.sr" + file="/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java" binary="false" corner="BOTTOM_RIGHT"> + <position height="97" width="118" x="138" y="115"/> + <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" + sort-features="false" accessors="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true" static="true"/> + <operations public="true" package="true" protected="true" private="true" static="true"/> + </display> + </class> + <class id="2" language="java" name="systemes.repartie.tree.ftp.Arbre.Arbre" project="projet1.sr" + file="/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java" binary="false" corner="BOTTOM_RIGHT"> + <position height="151" width="175" x="296" y="115"/> + <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" + sort-features="false" accessors="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true" static="true"/> + <operations public="true" package="true" protected="true" private="true" static="true"/> + </display> + </class> + <class id="3" language="java" name="systemes.repartie.tree.ftp.ParametreConnection.ConnectionParametre" + project="projet1.sr" + file="/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java" + binary="false" corner="BOTTOM_RIGHT"> + <position height="223" width="243" x="228" y="731"/> + <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" + sort-features="false" accessors="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true" static="true"/> + <operations public="true" package="true" protected="true" private="true" static="true"/> + </display> + </class> + <class id="4" language="java" name="systemes.repartie.tree.ftp.FtpConnection.Connection" project="projet1.sr" + file="/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java" binary="false" + corner="BOTTOM_RIGHT"> + <position height="385" width="243" x="228" y="306"/> + <display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" + sort-features="false" accessors="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true" static="true"/> + <operations public="true" package="true" protected="true" private="true" static="true"/> + </display> + </class> + <association id="5"> + <end type="SOURCE" refId="4" navigable="false"> + <attribute id="6" name="connect"/> + <multiplicity id="7" minimum="0" maximum="1"/> + </end> + <end type="TARGET" refId="3" navigable="true"/> + <display labels="true" multiplicity="true"/> + </association> + <association id="8"> + <end type="SOURCE" refId="2" navigable="false"> + <attribute id="9" name="connect"/> + <multiplicity id="10" minimum="0" maximum="1"/> + </end> + <end type="TARGET" refId="4" navigable="true"/> + <display labels="true" multiplicity="true"/> + </association> + <classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true" + sort-features="false" accessors="true" visibility="true"> + <attributes public="true" package="true" protected="true" private="true" static="true"/> + <operations public="true" package="true" protected="true" private="true" static="true"/> + </classifier-display> + <association-display labels="true" multiplicity="true"/> +</class-diagram> \ No newline at end of file diff --git a/projet1.sr/pom.xml b/projet1.sr/pom.xml index e2e9d1b..ac48748 100644 --- a/projet1.sr/pom.xml +++ b/projet1.sr/pom.xml @@ -35,10 +35,20 @@ <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>3.0.0</version> + <configuration> + <reportOutputDirectory>${project.build.directory}/docs</reportOutputDirectory> + <destDir>docs</destDir> + <nohelp>true</nohelp> + </configuration> + </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> + <version>3.1.0</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> @@ -50,7 +60,8 @@ </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> - <version>3.0.2</version> + <version>3.0.2</version><configuration><archive><manifest><mainClass>systemes.repartie.tree.ftp.Main</mainClass></manifest></archive></configuration> + </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> @@ -65,10 +76,12 @@ <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> + <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> + </plugins> </pluginManagement> </build> diff --git a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java index 754b363..74c0b1c 100644 --- a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java +++ b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java @@ -4,17 +4,29 @@ import java.io.IOException; import java.util.ArrayList; import systemes.repartie.tree.ftp.FtpConnection.Connection; - +/** + * class to display the tree of our repetory + * @author hocine + * + */ public class Arbre { + // variable declaration private Connection connect; + //constructor public Arbre(Connection connect) { this.connect=connect; } + //getter public Connection getConnection() { return this.connect; } + /* + * brows our repertory and display the tree of every file, directory or link using TypeOf methode + * params space : to put space between parent and children files + * @throws IOException + */ public void getTree(String space) throws IOException { this.connect.envoyerType(); String mySTring = this.connect.envoyerPASV(); @@ -28,6 +40,13 @@ public class Arbre { } } } + + /* + * Display the type of file in the param given (file "F",Directory "D" or Link "L" + * param space : to put space between parent and children files + * param s : pemission and type of file + * @throws IOException + */ public void TypeOf(String s,String space) throws IOException { String[] myline=NameOperation(s); @@ -48,6 +67,13 @@ public class Arbre { } } + + + /* + * Operation on String param to delete space and put "," between parts and finaly make it String[] + * params s + * @return String[] + */ public String[] NameOperation(String s){ s=s.replaceAll(" ",","); while(s.indexOf(",,")!=-1) { diff --git a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java index 8a61e2d..57a6733 100644 --- a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java +++ b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java @@ -18,7 +18,7 @@ import systemes.repartie.tree.ftp.ParametreConnection.ConnectionParametre; * */ public class Connection { - // parames + // variable declaration private ConnectionParametre connect; private Socket socket; private BufferedReader bfR; @@ -32,18 +32,17 @@ public class Connection { } - /* + /** * return the instance of ConnectionParametre used by our class */ public ConnectionParametre getConnectionParam() { return this.connect; } - /* + /** * Connexion to ftp server methode * this methode uses our instance of ConnectionParametre to connect to ftp server * @throws IOException - * @return void */ public void OperationConnection() throws IOException{ //creating a new instance of socket using ConnectionParametre adress and port @@ -90,26 +89,29 @@ public class Connection { } } - /* + /** * executing PWD commande to get repertory root * @throws IOException - * @return void */ public void envoyerPWD() throws IOException { if (this.socket==null) { System.out.println("Erreur connection FTP Server !!"); } else { - printer.write("PWD\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - //System.out.println(r); + try { + printer.write("PWD\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } } - /* + /** * executing CWD command using the directory given in param to access to it - * @param String : dossier + * @param dossier * @throws IOException * @return boolean : True if it succeed to access to the directory or False if it failed */ @@ -118,15 +120,24 @@ public class Connection { System.out.println("Erreur connection FTP Server !!"); } else { - printer.write("CWD "+dossier+"\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - return r.startsWith("250"); + try { + printer.write("CWD "+dossier+"\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + return r.startsWith("250"); + + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } + catch (NullPointerException e){ + return false; + } } return false; } - /* + /** * executing PASV command to enter to passive mode * @throws IOException * @return String : the information received in passive mode @@ -137,11 +148,15 @@ public class Connection { return ""; } else { - printer.write("PASV\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - //System.out.println(r); - return r; + try { + printer.write("PASV\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + return r; + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } } @@ -177,17 +192,20 @@ public class Connection { /* * executing TYPE I command to switch to the binary mode * @throws IOException - * @return void */ public void envoyerType() throws IOException { if (this.socket==null) { System.out.println("Erreur connection FTP Server !!"); } else { - printer.write("TYPE I\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - //System.out.println(r); + try { + printer.write("TYPE I\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } } @@ -200,56 +218,70 @@ public class Connection { ArrayList<String> Readl=new ArrayList<String>(); if (this.socket==null) { System.out.println("Erreur connection FTP Server !!"); + return Readl; } else { - printer.write("LIST\r\n"); - printer.flush(); - Readl=this.newConnection(adrs, port); - String r = this.bfR.readLine(); - r = this.bfR.readLine(); + try { + printer.write("LIST\r\n"); + printer.flush(); + Readl=this.newConnection(adrs, port); + String r = this.bfR.readLine(); + r = this.bfR.readLine(); + + return Readl; + } + + catch(IOException e) { + throw new IOException("Buffer reader error"); } - return Readl; + } } /* * executing Cdup To change directory * @throws IOException - * @return void */ public void envoyerCdup() throws IOException { if (this.socket==null) { System.out.println("Erreur connection FTP Server !!"); } else { - printer.write("CDUP\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - //System.out.println(r); + try { + printer.write("CDUP\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } } /* * executing Quit To QUIT socket * @throws IOException - * @return void */ public void envoyerQuit() throws IOException { if (this.socket==null) { System.out.println("Erreur connection FTP Server !!"); } else { - printer.write("QUIT\r\n"); - printer.flush(); - String r = this.bfR.readLine(); - //System.out.println(r); + try { + printer.write("QUIT\r\n"); + printer.flush(); + String r = this.bfR.readLine(); + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } } /* * Staring new socket the to get the List of file,directory and link in our repertory from IP Address and Port - * @param String Adresse : IP address - * @param STring Port : port + * @param Adresse : IP address + * @param Port : port * @throws IOException * @return ArrayList<String> : The List of file,directory and link in our repertory from IP Address and Port */ @@ -259,6 +291,7 @@ public class Connection { BufferedReader bfR1 = new BufferedReader(new InputStreamReader(socket1.getInputStream())); OutputStream outPut1 = socket1.getOutputStream(); PrintWriter printer1 = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream()))); + try { String r = bfR1.readLine(); while (r!=null) { liste.add(r); @@ -267,6 +300,10 @@ public class Connection { printer1.write("QUIT\r\n"); printer1.flush(); return liste; + } + catch(IOException e) { + throw new IOException("Buffer reader error"); + } } /* diff --git a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java index ccf2f73..b4630db 100644 --- a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java +++ b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java @@ -12,10 +12,22 @@ import java.net.Socket; import systemes.repartie.tree.ftp.Arbre.Arbre; import systemes.repartie.tree.ftp.FtpConnection.Connection; import systemes.repartie.tree.ftp.ParametreConnection.ConnectionParametre; - +/** + * Main + * @author hocine + * + */ public class Main { public static void main(String[] args) throws IOException { - ConnectionParametre connectPar= new ConnectionParametre("anonymous","anonymous",21,args[0]); + String user="anonymous"; + String pass="anonymous"; + if(args.length>1) { + user=args[1]; + } + if(args.length>2) { + pass=args[2]; + } + ConnectionParametre connectPar= new ConnectionParametre(user,pass,21,args[0]); Connection connect= new Connection(connectPar); System.out.println("-------------Connection-------------"); connect.OperationConnection(); diff --git a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java index 544715a..1759040 100644 --- a/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java +++ b/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java @@ -1,11 +1,17 @@ package systemes.repartie.tree.ftp.ParametreConnection; +/** + * Params class to identify user + * @author hocine + * + */ public class ConnectionParametre { + // variable declaration private String identifiant; private String motdepasse; private String adresse; private int port; - + //Constructor public ConnectionParametre(String identifiant,String motdepasse,int port,String adresse) { this.identifiant=identifiant; this.motdepasse=motdepasse; @@ -13,6 +19,8 @@ public class ConnectionParametre { this.adresse=adresse; } + //getters + public String getIdentifiant() { return this.identifiant; } diff --git a/projet1.sr/src/test/java/systemes/repartie/tree/ftp/FtpConnection/ConnectionTest.java b/projet1.sr/src/test/java/systemes/repartie/tree/ftp/FtpConnection/ConnectionTest.java new file mode 100644 index 0000000..5432806 --- /dev/null +++ b/projet1.sr/src/test/java/systemes/repartie/tree/ftp/FtpConnection/ConnectionTest.java @@ -0,0 +1,37 @@ +package systemes.repartie.tree.ftp.FtpConnection; +import org.junit.Test; + +import systemes.repartie.tree.ftp.ParametreConnection.ConnectionParametre; + +import static org.junit.Assert.*; + +import java.io.IOException; + +public class ConnectionTest { + public static ConnectionParametre connect=new ConnectionParametre("anonymous","anonymous",21,"ftp.ubuntu.com"); + public static Connection connectFtp= new Connection(connect); + + + + @Test + public void getConnectionParamTest() { + assertEquals(connectFtp.getConnectionParam().getIdentifiant(), "anonymous"); + } + + @Test + public void envoyerCWD() throws IOException { + connectFtp.OperationConnection(); + assertFalse(connectFtp.envoyerCWD("nonExistingRepertory")); + } + + @Test + public void envoyerPASV_envoyerType() throws IOException { + connectFtp.OperationConnection(); + connectFtp.envoyerType(); + connectFtp.OperationConnection(); + String line =connectFtp.envoyerPASV(); + assertTrue(line.startsWith("227 Entering Passive Mode")); + + } + +} diff --git a/projet1.sr/src/test/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametreTest.java b/projet1.sr/src/test/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametreTest.java new file mode 100644 index 0000000..5a83a08 --- /dev/null +++ b/projet1.sr/src/test/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametreTest.java @@ -0,0 +1,28 @@ +package systemes.repartie.tree.ftp.ParametreConnection; +import org.junit.Test; +import static org.junit.Assert.*; + +public class ConnectionParametreTest { + public static ConnectionParametre connect=new ConnectionParametre("anonymous","anonymous",21,"ftp.ubuntu.com"); + + + @Test + public void getIdentifiantTest() { + assertEquals(connect.getIdentifiant(), "anonymous"); + } + + @Test + public void getMotdepasseTest() { + assertEquals(connect.getMotdepasse(), "anonymous"); + } + + @Test + public void getAdresseTest() { + assertEquals(connect.getAdresse(), "ftp.ubuntu.com"); + } + + @Test + public void getPortTest() { + assertEquals(connect.getPort(), 21); + } +} diff --git a/projet1.sr/target/classes/systemes/repartie/tree/ftp/Arbre/Arbre.class b/projet1.sr/target/classes/systemes/repartie/tree/ftp/Arbre/Arbre.class deleted file mode 100644 index 0cfa5c1edc1b2afc56c20538395c1e69cff78a51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2905 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 diff --git a/projet1.sr/target/classes/systemes/repartie/tree/ftp/FtpConnection/Connection.class b/projet1.sr/target/classes/systemes/repartie/tree/ftp/FtpConnection/Connection.class deleted file mode 100644 index e735c80fd235fe973e7613002bc9e3596c6e5430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6088 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 diff --git a/projet1.sr/target/classes/systemes/repartie/tree/ftp/Main.class b/projet1.sr/target/classes/systemes/repartie/tree/ftp/Main.class deleted file mode 100644 index 03172c9e14c76daa1822f6aa46df35fec02dc375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmX^0Z`VEs1_omWFLnkdMh5xf%HopL+|*+IqSS)KqLR#1{gR^8RQ<G)0)5}a%sh4m z7Dfhvti-ZJ{hY+SbbbG%tkmQZMg}&U%)HDJJ4Oa(4b3n{1{UZ1lvFMTW(H0k237_( zMh1SL%)C^;(%hufqL9R-oK!{zA)ox@#GJ6iqD&AUD#%ijky*^hpy)%u8P<#pEV+r9 zd5jEV8qq!o=LDA&W#*+@gPg$ST9KSuP?DLSSIo{J#K<5FR+X8r@97VhVP_CwWN^Y` zS3qJ>Vs2_lQL1x(US4W4$TWQf6E4faAjZhRnV6TKSDBk%TFk{D%pd{sxFjQkl?JBs zFhx8ug*3z18KfB*jPbb6t)u|q7$kRbF-S4Ug6x-LWN_EO7nX1zU^NFWYpof^$)LcX z#Ll3I68pj6#KOa%%%H-^z?@%N!pI;B@kwUBen3%XUP*9CQEFnYH3x$lBZG=AGC<gf zEUL@JpuwQU&Y+1DVMqq?FlaOAFfy<gfXvRxV`LD;61<vWpa9V0VbBMqJYoNW)S^UC z%pq*#U@&B4VC3RpFh+Nku9iYbQEIA!7K)>E*%?e38PxDZg=0}tQK~+e<YF*kFb9Rc z1tWt6-q6Ptf7Y5|91K>B3=ANnY<L)K!G2CpEde==gTWrd(Ws7v@faCc5{uG{85xAJ zWD!ONu4G7>4oECwWN@KIDq&<`hnmUAV2aN`oE~RnU;?=YZ>WI-84}dij0{}C`K3k4 zscxB|GKCXVMCpMtI)fquBLg!72rw})g32HUMh12U1_pfwMg~R(1_oBG?F<|n85kIt z7`PZ17}&sq0u0;?3=BMAHY)=U11|#u11AF?13v>3g8%~q0}BHqgCN+LT@36DEDQ_` ze!CfjBZWkTL<K~(n2okGi2Lkjkc!ma&LHEvi9udSbsK}a&Nc>J5ZhoIgF1*d+Qy*1 zo53VfXFG$LpRSPQHU?{uu-!HWb%cAgz^)Qv5M&T$kYW&FP+|~eP-75d&|?s1Fk_Hl zuxF5DaAlBU@MVwzyIBk38U_ajM+OE4K?Yj}CkAH*Mg}Pc69yLsR|X~qdj@_6HwJeG MW(GzE53s*I0T7FjHvj+t diff --git a/projet1.sr/target/classes/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.class b/projet1.sr/target/classes/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.class deleted file mode 100644 index c39b92cac0ef1fb33a526fa815fd2f4c8bf65cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmX^0Z`VEs1_omWRW1g023bx9HU>EmArB%HK!hSYgAzM~G9v?bW=d*aNoHDRVqOU& zgOE>FVp*boPGVlVesD=qW?s5ABLi1%eo0DdL1J-nDkB4XVoFgen8i|%UsS@#!05@y zz-E(~msw)R$Y7;`X#l2(C#H~Q7$XCVbAC!HBLlxrW?rgaX>L+#QAlD^PAbS%`N@en zVTnbVAU;%(r6eP>n32K7r?|4XBsDj+SidN>AhD<<GgZH&C^c0-t)xIdAh9ShH?^cF z)j2;eFEzO&Ge1us!Gz0NGcxd{r<QmkhlGfRCZ;PH8F<rEOMH=ngDX9?#1R%E?CGf` z0pLJk*3k51WZ(+UFD*(=b;|^KLIR7$dZ5teVc=s>;bGul;N)T80uek6ygUrt44jM% zPL%tNkwE}t2_#DWld@8iOBflLH8jH*6dBkU*cliYSQwZ<mNPIgFoEm`)7%W4V48=4 zmw|zSm4T6gkAa_okwJigfuVtciGh`Yfk8@ZI|HMZ_ErWaEuF0l%v!Qr8CbL=S++8; zZUpNU1gT+QV_;z5WMBcC%+0{Zz{4QSz{?=Xz{eoOz`$SvF^NH#L4*MWq`)p=1ncBt z;ACI|vp}w32D3o!Vqsup5M>a9x<;RYkpZNhRci|a(+0T3Y+yk_uq8ZTHY?N;Mh0=L nnwilxi(u6(fmJgrx@K{#nk5;eusEA#4Vts1uxgeDtC9f#hwHdd diff --git a/projet1.sr/target/maven-archiver/pom.properties b/projet1.sr/target/maven-archiver/pom.properties deleted file mode 100644 index aabb671..0000000 --- a/projet1.sr/target/maven-archiver/pom.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Created by Apache Maven 3.6.3 -groupId=systemes.repartie.tree.ftp -artifactId=projet1.sr -version=1.0-SNAPSHOT diff --git a/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 5612e04..0000000 --- a/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,4 +0,0 @@ -systemes/repartie/tree/ftp/FtpConnection/Connection.class -systemes/repartie/tree/ftp/Arbre/Arbre.class -systemes/repartie/tree/ftp/Main.class -systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.class diff --git a/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 40863ba..0000000 --- a/projet1.sr/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,4 +0,0 @@ -/home/hocine/eclipse-workspace/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Main.java -/home/hocine/eclipse-workspace/projet1.sr/src/main/java/systemes/repartie/tree/ftp/ParametreConnection/ConnectionParametre.java -/home/hocine/eclipse-workspace/projet1.sr/src/main/java/systemes/repartie/tree/ftp/FtpConnection/Connection.java -/home/hocine/eclipse-workspace/projet1.sr/src/main/java/systemes/repartie/tree/ftp/Arbre/Arbre.java diff --git a/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 46ca8b9..0000000 --- a/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1 +0,0 @@ -systemes/repartie/tree/ftp/AppTest.class diff --git a/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 0960a7a..0000000 --- a/projet1.sr/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1 +0,0 @@ -/home/hocine/eclipse-workspace/projet1.sr/src/test/java/systemes/repartie/tree/ftp/AppTest.java diff --git a/projet1.sr/target/projet1.sr-1.0-SNAPSHOT.jar b/projet1.sr/target/projet1.sr-1.0-SNAPSHOT.jar deleted file mode 100644 index 6159e211bcc4621dcf8f5c4774322fd02fbf8a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9174 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 bflY{NCBU1N4P>YggAl_#RtAPgvLGG+U;6L{ diff --git a/projet1.sr/target/surefire-reports/TEST-systemes.repartie.tree.ftp.AppTest.xml b/projet1.sr/target/surefire-reports/TEST-systemes.repartie.tree.ftp.AppTest.xml deleted file mode 100644 index 6ace96f..0000000 --- a/projet1.sr/target/surefire-reports/TEST-systemes.repartie.tree.ftp.AppTest.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="systemes.repartie.tree.ftp.AppTest" time="0.029" tests="1" errors="0" skipped="0" failures="0"> - <properties> - <property name="sun.desktop" value="gnome"/> - <property name="awt.toolkit" value="sun.awt.X11.XToolkit"/> - <property name="java.specification.version" value="11"/> - <property name="sun.cpu.isalist" value=""/> - <property name="sun.jnu.encoding" value="UTF-8"/> - <property name="java.class.path" value="/home/hocine/eclipse-workspace/projet1.sr/target/test-classes:/home/hocine/eclipse-workspace/projet1.sr/target/classes:/home/hocine/.m2/repository/junit/junit/4.11/junit-4.11.jar:/home/hocine/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:"/> - <property name="java.vm.vendor" value="Ubuntu"/> - <property name="sun.arch.data.model" value="64"/> - <property name="java.vendor.url" value="https://ubuntu.com/"/> - <property name="user.timezone" value=""/> - <property name="java.vm.specification.version" value="11"/> - <property name="os.name" value="Linux"/> - <property name="sun.java.launcher" value="SUN_STANDARD"/> - <property name="user.country" value="FR"/> - <property name="sun.boot.library.path" value="/usr/lib/jvm/java-11-openjdk-amd64/lib"/> - <property name="sun.java.command" value="/home/hocine/eclipse-workspace/projet1.sr/target/surefire/surefirebooter12294673392553916757.jar /home/hocine/eclipse-workspace/projet1.sr/target/surefire 2021-02-03T12-42-24_160-jvmRun1 surefire7600803984115398973tmp surefire_012456435499636066475tmp"/> - <property name="jdk.debug" value="release"/> - <property name="surefire.test.class.path" value="/home/hocine/eclipse-workspace/projet1.sr/target/test-classes:/home/hocine/eclipse-workspace/projet1.sr/target/classes:/home/hocine/.m2/repository/junit/junit/4.11/junit-4.11.jar:/home/hocine/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar:"/> - <property name="sun.cpu.endian" value="little"/> - <property name="user.home" value="/home/hocine"/> - <property name="user.language" value="fr"/> - <property name="java.specification.vendor" value="Oracle Corporation"/> - <property name="java.version.date" value="2020-11-04"/> - <property name="java.home" value="/usr/lib/jvm/java-11-openjdk-amd64"/> - <property name="file.separator" value="/"/> - <property name="basedir" value="/home/hocine/eclipse-workspace/projet1.sr"/> - <property name="java.vm.compressedOopsMode" value="32-bit"/> - <property name="line.separator" value=" "/> - <property name="java.specification.name" value="Java Platform API Specification"/> - <property name="java.vm.specification.vendor" value="Oracle Corporation"/> - <property name="java.awt.graphicsenv" value="sun.awt.X11GraphicsEnvironment"/> - <property name="surefire.real.class.path" value="/home/hocine/eclipse-workspace/projet1.sr/target/surefire/surefirebooter12294673392553916757.jar"/> - <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> - <property name="java.runtime.version" value="11.0.9.1+1-Ubuntu-0ubuntu1.20.04"/> - <property name="user.name" value="hocine"/> - <property name="path.separator" value=":"/> - <property name="os.version" value="5.4.0-65-generic"/> - <property name="java.runtime.name" value="OpenJDK Runtime Environment"/> - <property name="file.encoding" value="UTF-8"/> - <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/> - <property name="localRepository" value="/home/hocine/.m2/repository"/> - <property name="java.vendor.url.bug" value="https://bugs.launchpad.net/ubuntu/+source/openjdk-lts"/> - <property name="java.io.tmpdir" value="/tmp"/> - <property name="java.version" value="11.0.9.1"/> - <property name="user.dir" value="/home/hocine/eclipse-workspace/projet1.sr"/> - <property name="os.arch" value="amd64"/> - <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/> - <property name="java.awt.printerjob" value="sun.print.PSPrinterJob"/> - <property name="sun.os.patch.level" value="unknown"/> - <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib"/> - <property name="java.vm.info" value="mixed mode, sharing"/> - <property name="java.vendor" value="Ubuntu"/> - <property name="java.vm.version" value="11.0.9.1+1-Ubuntu-0ubuntu1.20.04"/> - <property name="sun.io.unicode.encoding" value="UnicodeLittle"/> - <property name="java.class.version" value="55.0"/> - </properties> - <testcase name="shouldAnswerWithTrue" classname="systemes.repartie.tree.ftp.AppTest" time="0.002"/> -</testsuite> \ No newline at end of file diff --git a/projet1.sr/target/surefire-reports/systemes.repartie.tree.ftp.AppTest.txt b/projet1.sr/target/surefire-reports/systemes.repartie.tree.ftp.AppTest.txt deleted file mode 100644 index 8ace87e..0000000 --- a/projet1.sr/target/surefire-reports/systemes.repartie.tree.ftp.AppTest.txt +++ /dev/null @@ -1,4 +0,0 @@ -------------------------------------------------------------------------------- -Test set: systemes.repartie.tree.ftp.AppTest -------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 s - in systemes.repartie.tree.ftp.AppTest diff --git a/projet1.sr/target/test-classes/systemes/repartie/tree/ftp/AppTest.class b/projet1.sr/target/test-classes/systemes/repartie/tree/ftp/AppTest.class deleted file mode 100644 index 274260a5d3061de41315b7e3f0c845835ef686a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmX^0Z`VEs1_omWNiGH!20<<cAqHV~1`&1!QAP$fo6Nk-5<5l)W)00SMg|t={FGEi z27aH+yi~u^+@#c^ki?{%R7M6NpZw&+oUp{AOb{O`$WoG#S<J|w;!|8%T#}lbTC87` zT98;&l9{SsQk0sipH@<!?^sX}l3HA1&B!29oRMFelj4|HT%KAKo>`I+QdFAC$RHV1 znpcvUn;Mo`oSBr9>X?_8Uy@jonV(n8$ROa8UzDz&RhpMsq7OBND>%QjC^^+F6XYr$ zsOfrHiDijA46F=n><nT&4B`wDj0{SI9mU8X0Me+RlbDyT@1K;Fnq0!jAb_yavA8(3 zsDzP$D-q0qxR*sEN;8Z>k%5_kg#iSZ7#KkoGcYo+GcYjdGcYnRGB7Z(YHep=+{nPd zz{J48z`(!;7UW{!WME+60kc^dxEQz@7#J8Cco^6in82EiVVYTXFfbuBb1^V6Ffa%) UurLT?F@P6pJRjIFez27S08XE3xBvhE -- GitLab