From 7c8c1854567568b2a576befec6762918f053300a Mon Sep 17 00:00:00 2001 From: "antoine.perederii" Date: Thu, 16 Nov 2023 09:55:35 +0100 Subject: [PATCH] add java's tp --- 2A/Java/tp/4_tp/.idea/.gitignore | 0 2A/Java/tp/4_tp/.idea/4_tp.iml | 9 ++++ 2A/Java/tp/4_tp/.idea/misc.xml | 6 +++ 2A/Java/tp/4_tp/.idea/modules.xml | 8 +++ 2A/Java/tp/4_tp/.idea/vcs.xml | 6 +++ 2A/Java/tp/4_tp/.idea/workspace.xml | 38 ++++++++++++++ 2A/Java/tp/4_tp/Sujet.txt | 38 ++++++++++++++ 2A/Java/tp/4_tp/TP4/TP4/.idea/.gitignore | 3 ++ 2A/Java/tp/4_tp/TP4/TP4/.idea/misc.xml | 6 +++ 2A/Java/tp/4_tp/TP4/TP4/.idea/modules.xml | 8 +++ 2A/Java/tp/4_tp/TP4/TP4/.idea/vcs.xml | 6 +++ 2A/Java/tp/4_tp/TP4/TP4/TP4.iml | 11 ++++ 2A/Java/tp/4_tp/TP4/TP4/src/main/Main.java | 4 ++ .../tp/4_tp/TP4/TP4/src/models/Fichier.java | 49 ++++++++++++++++++ .../4_tp/TP4/TP4/src/models/FichierTexte.java | 21 ++++++++ .../4_tp/TP4/TP4/src/models/Repertoire.java | 27 ++++++++++ 2A/systeme/tp/1_tp/ex1 | Bin 33104 -> 0 bytes 17 files changed, 240 insertions(+) create mode 100644 2A/Java/tp/4_tp/.idea/.gitignore create mode 100644 2A/Java/tp/4_tp/.idea/4_tp.iml create mode 100644 2A/Java/tp/4_tp/.idea/misc.xml create mode 100644 2A/Java/tp/4_tp/.idea/modules.xml create mode 100644 2A/Java/tp/4_tp/.idea/vcs.xml create mode 100644 2A/Java/tp/4_tp/.idea/workspace.xml create mode 100644 2A/Java/tp/4_tp/Sujet.txt create mode 100644 2A/Java/tp/4_tp/TP4/TP4/.idea/.gitignore create mode 100644 2A/Java/tp/4_tp/TP4/TP4/.idea/misc.xml create mode 100644 2A/Java/tp/4_tp/TP4/TP4/.idea/modules.xml create mode 100644 2A/Java/tp/4_tp/TP4/TP4/.idea/vcs.xml create mode 100644 2A/Java/tp/4_tp/TP4/TP4/TP4.iml create mode 100644 2A/Java/tp/4_tp/TP4/TP4/src/main/Main.java create mode 100644 2A/Java/tp/4_tp/TP4/TP4/src/models/Fichier.java create mode 100644 2A/Java/tp/4_tp/TP4/TP4/src/models/FichierTexte.java create mode 100644 2A/Java/tp/4_tp/TP4/TP4/src/models/Repertoire.java delete mode 100755 2A/systeme/tp/1_tp/ex1 diff --git a/2A/Java/tp/4_tp/.idea/.gitignore b/2A/Java/tp/4_tp/.idea/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/2A/Java/tp/4_tp/.idea/4_tp.iml b/2A/Java/tp/4_tp/.idea/4_tp.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/2A/Java/tp/4_tp/.idea/4_tp.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/.idea/misc.xml b/2A/Java/tp/4_tp/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/2A/Java/tp/4_tp/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/.idea/modules.xml b/2A/Java/tp/4_tp/.idea/modules.xml new file mode 100644 index 0000000..d1f9835 --- /dev/null +++ b/2A/Java/tp/4_tp/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/.idea/vcs.xml b/2A/Java/tp/4_tp/.idea/vcs.xml new file mode 100644 index 0000000..4fce1d8 --- /dev/null +++ b/2A/Java/tp/4_tp/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/.idea/workspace.xml b/2A/Java/tp/4_tp/.idea/workspace.xml new file mode 100644 index 0000000..0d5d83a --- /dev/null +++ b/2A/Java/tp/4_tp/.idea/workspace.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + 1700122003637 + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/Sujet.txt b/2A/Java/tp/4_tp/Sujet.txt new file mode 100644 index 0000000..8023e94 --- /dev/null +++ b/2A/Java/tp/4_tp/Sujet.txt @@ -0,0 +1,38 @@ +Un petit système de fichiers et ses petites commandes +Le but du TP est de simuler un petit système de fichiers avec des répertoires et des fichiers textes sur lesquels on pourra appliquer des commandes (ls -R, dump, du, …). + +Fonctionnalités +Tous les fichiers devront avoir un nom, une date de création (une vraie date hein !), ainsi que des droits (leur version en octal : 644, 750, etc.) qu'on ne pourra pas modifier une fois créés. Si non spécifiés, les droits par défaut seront 755 pour les dossiers et 644 pour n'importe quel autre fichier. On devra aussi pouvoir récupérer leur taille; +Un fichier texte aura comme contenu initial celui passé en argument à sa construction. On devra aussi pouvoir rajouter du texte à ce dernier et récupérer l'ensemble du texte qu'il contient. Sa taille sera la longueur de son contenu textuel; +La conversion d'un fichier texte en chaîne de caractères respectera le format : +"TextFile nom_du_fichier (droits) created on date_de_creation" +Un répertoire pourra contenir plusieurs fichiers (au sens large) qui seront triés et uniques; +La taille d'un répertoire sera le nombre de fichiers qu'il contient augmenté de 1; +Deux fichiers sont identiques s'ils ont le même nom. Ils sont ordonnés par ordre alphabétique en fonction de leur nom; +On pourra ajouter un fichier à un répertoire. Si le fichier est déjà présent, il faudra lever une IllegalArgumentException avec pour message : "This directory already contains the file nom_du_fichier"; +On devra pouvoir récupérer le contenu du répertoire sous forme d'une collection non modifiable; +La conversion d'un répertoire en chaîne de caractères respectera le format : +"Directory nom_du_fichier (droits) created on date_de_creation" +Une classe (LsR) implémentera le listing récursif d'un fichier : pour un fichier texte ça affichera simplement le fichier sur la sortie standard. Pour un dossier, on affichera une ligne du style "Directory [nom_du_dossier] content :" suivi du listing de ses fichiers. On terminera le listing d'un dossier par une ligne "-----". +Les plus téméraires pourront tenter d'indenter le listing comme sur l'exemple, mais ne le faites que si vous avez fini le reste +Une classe (Dump) permettra d'enregistrer par sérialisation le contenu d'un fichier dans un vrai fichier (un de votre OS). Si une exception se produit, le texte "Le fichier n'a pas pu être écrit." sera écrit sur la sortie d'erreur, et le programme continuera comme si de rien n'était. +Un Dump pourra être créé en spécifiant le chemin d'accès du fichier (celui de votre OS) dans lequel est effectuée la sauvegarde. Si ce chemin n'est pas spécifié, on utilisera le nom du fichier par défaut défini dans la classe qu'on placera dans le HOME de l'utilisateur (vous pouvez obtenir ce dernier grâce à l'appel System.getProperty("user.home")); +On devra pouvoir ajouter d'autre commandes dans le futur (par exemple du qui affichera la taille totale de n'importe quel fichier) : pensez-y au moment de la conception ! +On devra pouvoir simuler des «petits scripts», c'est-à-dire créer des listes de commandes qu'on appliquera à un fichier. +Exemple de résultat attendu +Voici l'affichage par LsR d'un TextFile simple, suivi de l'affichage d'un Directory qui contient à la fois deux TextFile et un Directory qui lui-même contient 4 TextFile. On finit en enregistant la hiérarchie avec un Dump. + +TextFile Matrix.txt (644) created on 2018-03-16 + +Directory [home] content : + TextFile H2G2 le guide du voyageur galactique.txt (644) created on 2018-03-16 + Directory [bpoo] content : + TextFile TP1.java (644) created on 2018-03-16 + TextFile TPVoitures.java (644) created on 2018-03-16 + TextFile notes.txt (644) created on 2018-03-16 + TextFile énoncé.txt (644) created on 2018-03-16 + ----- +TextFile news.txt (644) created on 2018-03-16 +----- + +Enregistrement dans le fichier /home/provot/hierarchy_dump diff --git a/2A/Java/tp/4_tp/TP4/TP4/.idea/.gitignore b/2A/Java/tp/4_tp/TP4/TP4/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/2A/Java/tp/4_tp/TP4/TP4/.idea/misc.xml b/2A/Java/tp/4_tp/TP4/TP4/.idea/misc.xml new file mode 100644 index 0000000..5295b2c --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/TP4/TP4/.idea/modules.xml b/2A/Java/tp/4_tp/TP4/TP4/.idea/modules.xml new file mode 100644 index 0000000..a527947 --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/TP4/TP4/.idea/vcs.xml b/2A/Java/tp/4_tp/TP4/TP4/.idea/vcs.xml new file mode 100644 index 0000000..821e530 --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/TP4/TP4/TP4.iml b/2A/Java/tp/4_tp/TP4/TP4/TP4.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/TP4.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/4_tp/TP4/TP4/src/main/Main.java b/2A/Java/tp/4_tp/TP4/TP4/src/main/Main.java new file mode 100644 index 0000000..31910cb --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/src/main/Main.java @@ -0,0 +1,4 @@ +package main; + +public class Main { +} diff --git a/2A/Java/tp/4_tp/TP4/TP4/src/models/Fichier.java b/2A/Java/tp/4_tp/TP4/TP4/src/models/Fichier.java new file mode 100644 index 0000000..32b97ad --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/src/models/Fichier.java @@ -0,0 +1,49 @@ +package models; + +import java.util.Date; + +public abstract class Fichier { + private String nom; + private final Date dateCreation; + private int droit; + private int taille; + + public Fichier(String nom, Date dateCreation, int droit, int taille){ + this.nom = nom; + this.dateCreation = dateCreation; + this.droit = droit; + this.taille = taille; + } + private String getNom() { + return this.nom; + } + + public Date getDateCreation() { + return dateCreation; + } + + public int getDroit() { + return droit; + } + + public int getTaille() { + return taille; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public void setDroit(int droit) { + this.droit = droit; + } + + public void setTaille(int taille) { + this.taille = taille; + } + + @Override + protected String equals() { + + } +} diff --git a/2A/Java/tp/4_tp/TP4/TP4/src/models/FichierTexte.java b/2A/Java/tp/4_tp/TP4/TP4/src/models/FichierTexte.java new file mode 100644 index 0000000..c6113c6 --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/src/models/FichierTexte.java @@ -0,0 +1,21 @@ +package models; + +import java.util.Date; + +public class FichierTexte extends Fichier { + + private StringBuilder monContenu; + + public FichierTexte(String nom, Date dateCreation, int droit, int taille) { + super(nom, dateCreation, droit, taille); + } + + private StringBuilder getContenu(){ + return this.monContenu; + } + + @Override + public String toString() { + return "monContenu : ' " + monContenu + "'"; + } +} diff --git a/2A/Java/tp/4_tp/TP4/TP4/src/models/Repertoire.java b/2A/Java/tp/4_tp/TP4/TP4/src/models/Repertoire.java new file mode 100644 index 0000000..b619ebc --- /dev/null +++ b/2A/Java/tp/4_tp/TP4/TP4/src/models/Repertoire.java @@ -0,0 +1,27 @@ +package models; + +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class Repertoire extends Fichier { + + List monRepertoire = new ArrayList<>(); + + public Repertoire(String nom, Date dateCreation, int droit, int taille) { + super(nom, dateCreation, droit, taille); + } + + private void ajouterFichier(Fichier monFichier) { + monRepertoire.add(monFichier); + } + + private void supprimerFichier(Fichier monFichier) { + monRepertoire.remove(monFichier); + } + + private List getFichier(){ + return this.monRepertoire; + } +} diff --git a/2A/systeme/tp/1_tp/ex1 b/2A/systeme/tp/1_tp/ex1 deleted file mode 100755 index 92e8fd4a6a80b08a0299bb1d65e1e460cd35624b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33104 zcmeI5J!lj`6vt;x)EHwDL`2bI5hH%bFHn@ki)L{}O@c`v2r?$Q&E>$Hdbg)%5jY6} zk7!{hRyN{CWosuWepIHku@oYlkj^0D`G2#!$=<1jjn)6b+nN7-ynXZAX=nDs_pd)! zDrMCvrIx{4#p{)tRyJx%ZG^jUt^2x8ITxJsz0z83R<-=2k~p_9Q0oC_XrOwCnV+a` zQ=wjtW^trsOl#jO_@O{i8*jD~i$VKzI7Dc=zY+_Msj)% zE&FQ2Ev1g2Tn+Do$4$nH$McN$n>yx4-#*^g3}M5Y;O+Tbw*7K?q&<1_auQl>6I}9m zw&mLRiw7Ma?;R){c0LvE96*~5x8O=ilx9;mIjsCvw-YU9ebNovj`c|#+2?VS_sY7Y zPu2j1o?1Iitt7G5+GAOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*_*VjhZt1f-Rkq(cKV)iYa=|U-=ifSIQ8P~Yn6uDw zcbC-jWp~DzcSp~mT=&ks+cAXJ=W5Og22Q=SN>2I9`%0yPJ~{P1w;vDG<)rMKIj>xL z19=J()8we`{+I65Yy0A>O4}o-O50=ee2V9AHkF_7GQQoGw2#_tIlECc?y0dx)z>xP z+8v$f59*jG=YTiE#p0!$>6J6T36$c|xpb+=P0kHBAxf)>WO{<5#qmL^wHP$E79}pM zXr6qK011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@{5JwN-X#A% zzXX^20^%10)I&!m{}PYP)D!sgc_L~F=2^Hvz*-C661MA<=X;s!N?*;UGyWLLyq`m# zr4@!nKUklgL`_eOYp>vq=6z3(d&5aDt5!`6r!#5|?mEDLXn2bi`~h9^Tn}$SMeafn oEq5fKl&Z0