From 3f431af7a9b984db3d8acc6082a5a04b5335f2dc Mon Sep 17 00:00:00 2001 From: "antoine.perederii" Date: Tue, 21 Nov 2023 21:51:14 +0100 Subject: [PATCH] add java --- 2A/Java/tp/tp-temperature | 1 + 2A/Java/tp/tp1-intro/.idea/.gitignore | 3 + 2A/Java/tp/tp1-intro/.idea/misc.xml | 6 + 2A/Java/tp/tp1-intro/.idea/modules.xml | 8 ++ 2A/Java/tp/tp1-intro/.idea/uiDesigner.xml | 124 ++++++++++++++++++ .../fr/uca/iut/clfreville2/tp1/Main.class | Bin 0 -> 1104 bytes .../uca/iut/clfreville2/tp1/cli/Action.class | Bin 0 -> 1294 bytes .../tp1/cli/CommandLineInterface$1.class | Bin 0 -> 938 bytes .../tp1/cli/CommandLineInterface.class | Bin 0 -> 3740 bytes .../iut/clfreville2/tp1/io/Afficheur.class | Bin 0 -> 1392 bytes .../clfreville2/tp1/io/AfficheurConsole.class | Bin 0 -> 2390 bytes .../iut/clfreville2/tp1/io/Saisisseur.class | Bin 0 -> 244 bytes .../tp1/io/SaisisseurConsole.class | Bin 0 -> 1706 bytes .../iut/clfreville2/tp1/model/Patient.class | Bin 0 -> 2038 bytes .../clfreville2/tp1/model/Repertoire.class | Bin 0 -> 1572 bytes .../tp1/persistance/FilePersistance.class | Bin 0 -> 2537 bytes .../tp1/persistance/LoaderPersistance.class | Bin 0 -> 220 bytes .../persistance/NoopWriterPersistance.class | Bin 0 -> 618 bytes .../tp1/persistance/Persistance.class | Bin 0 -> 270 bytes .../persistance/StubLoaderPersistance.class | Bin 0 -> 795 bytes .../tp1/persistance/WriterPersistance.class | Bin 0 -> 222 bytes 2A/Java/tp/tp1-intro/repertoire.txt | 2 + .../src/fr/uca/iut/clfreville2/tp1/Main.java | 21 +++ .../uca/iut/clfreville2/tp1/cli/Action.java | 21 +++ .../tp1/cli/CommandLineInterface.java | 80 +++++++++++ .../uca/iut/clfreville2/tp1/io/Afficheur.java | 56 ++++++++ .../clfreville2/tp1/io/AfficheurConsole.java | 50 +++++++ .../iut/clfreville2/tp1/io/Saisisseur.java | 10 ++ .../clfreville2/tp1/io/SaisisseurConsole.java | 42 ++++++ .../iut/clfreville2/tp1/model/Patient.java | 9 ++ .../iut/clfreville2/tp1/model/Repertoire.java | 36 +++++ .../tp1/persistance/FilePersistance.java | 46 +++++++ .../tp1/persistance/LoaderPersistance.java | 11 ++ .../persistance/NoopWriterPersistance.java | 11 ++ .../tp1/persistance/Persistance.java | 7 + .../persistance/StubLoaderPersistance.java | 12 ++ .../tp1/persistance/WriterPersistance.java | 11 ++ 2A/Java/tp/tp1-intro/tp1-intro.iml | 11 ++ 2A/Java/tp/tp2-zoo/.idea/.gitignore | 3 + 2A/Java/tp/tp2-zoo/.idea/misc.xml | 6 + 2A/Java/tp/tp2-zoo/.idea/modules.xml | 8 ++ 2A/Java/tp/tp2-zoo/.idea/uiDesigner.xml | 124 ++++++++++++++++++ 2A/Java/tp/tp2-zoo/animalerie.txt | 1 + .../fr/uca/iut/clfreville2/tp2/Main.class | Bin 0 -> 1467 bytes .../tp2/cli/CommandLineInterface.class | Bin 0 -> 4901 bytes .../tp2/cli/cmd/AjouterCommande.class | Bin 0 -> 1818 bytes .../tp2/cli/cmd/CommandRegistry$Builder.class | Bin 0 -> 439 bytes .../tp2/cli/cmd/CommandRegistry.class | Bin 0 -> 776 bytes .../clfreville2/tp2/cli/cmd/Commande.class | Bin 0 -> 279 bytes .../CommandeRegistryImpl$ThisBuilder.class | Bin 0 -> 1363 bytes .../tp2/cli/cmd/CommandeRegistryImpl.class | Bin 0 -> 1366 bytes .../tp2/cli/cmd/ListerCommande.class | Bin 0 -> 1461 bytes .../tp2/cli/cmd/PasserCommande.class | Bin 0 -> 2888 bytes .../AnimalFactory$AnimalSupplier.class | Bin 0 -> 731 bytes .../tp2/factory/AnimalFactory$Builder.class | Bin 0 -> 749 bytes .../tp2/factory/AnimalFactory.class | Bin 0 -> 964 bytes .../AnimalFactoryImpl$ThisBuilder.class | Bin 0 -> 2090 bytes .../tp2/factory/AnimalFactoryImpl.class | Bin 0 -> 3252 bytes .../iut/clfreville2/tp2/io/Afficheur.class | Bin 0 -> 197 bytes .../clfreville2/tp2/io/AfficheurConsole.class | Bin 0 -> 830 bytes .../tp2/io/AnimalFromUserInputFactory.class | Bin 0 -> 3081 bytes .../clfreville2/tp2/io/NoopAfficheur.class | Bin 0 -> 588 bytes .../iut/clfreville2/tp2/io/Saisisseur.class | Bin 0 -> 328 bytes .../tp2/io/SaisisseurConsole.class | Bin 0 -> 1721 bytes .../clfreville2/tp2/modele/Animalerie.class | Bin 0 -> 2664 bytes .../iut/clfreville2/tp2/modele/Climat.class | Bin 0 -> 1221 bytes .../clfreville2/tp2/modele/EtreVivant.class | Bin 0 -> 250 bytes .../uca/iut/clfreville2/tp2/modele/Lieu.class | Bin 0 -> 1096 bytes .../comportement/CapaciteMotrices.class | Bin 0 -> 224 bytes .../tp2/modele/comportement/Hibernateur.class | Bin 0 -> 699 bytes .../tp2/modele/comportement/Migrateur.class | Bin 0 -> 919 bytes .../tp2/modele/comportement/SubitClimat.class | Bin 0 -> 215 bytes .../clfreville2/tp2/modele/impl/Animal.class | Bin 0 -> 1138 bytes .../clfreville2/tp2/modele/impl/Oiseau.class | Bin 0 -> 1542 bytes .../clfreville2/tp2/modele/impl/Ours.class | Bin 0 -> 1685 bytes .../persistance/FileReaderPersistance.class | Bin 0 -> 2511 bytes .../persistance/FileWriterPersistance.class | Bin 0 -> 3224 bytes .../tp2/persistance/ReadPersistance.class | Bin 0 -> 267 bytes .../tp2/persistance/StubReadPersistance.class | Bin 0 -> 1153 bytes .../tp2/persistance/WritePersistance.class | Bin 0 -> 271 bytes .../src/fr/uca/iut/clfreville2/tp2/Main.java | 17 +++ .../tp2/cli/CommandLineInterface.java | 89 +++++++++++++ .../tp2/cli/cmd/AjouterCommande.java | 19 +++ .../tp2/cli/cmd/CommandRegistry.java | 19 +++ .../iut/clfreville2/tp2/cli/cmd/Commande.java | 17 +++ .../tp2/cli/cmd/CommandeRegistryImpl.java | 34 +++++ .../tp2/cli/cmd/ListerCommande.java | 19 +++ .../tp2/cli/cmd/PasserCommande.java | 19 +++ .../tp2/factory/AnimalFactory.java | 84 ++++++++++++ .../tp2/factory/AnimalFactoryImpl.java | 52 ++++++++ .../uca/iut/clfreville2/tp2/io/Afficheur.java | 11 ++ .../clfreville2/tp2/io/AfficheurConsole.java | 19 +++ .../tp2/io/AnimalFromUserInputFactory.java | 29 ++++ .../iut/clfreville2/tp2/io/NoopAfficheur.java | 13 ++ .../iut/clfreville2/tp2/io/Saisisseur.java | 18 +++ .../clfreville2/tp2/io/SaisisseurConsole.java | 44 +++++++ .../clfreville2/tp2/modele/Animalerie.java | 36 +++++ .../iut/clfreville2/tp2/modele/Climat.java | 9 ++ .../clfreville2/tp2/modele/EtreVivant.java | 8 ++ .../uca/iut/clfreville2/tp2/modele/Lieu.java | 7 + .../modele/comportement/CapaciteMotrices.java | 8 ++ .../tp2/modele/comportement/Hibernateur.java | 22 ++++ .../tp2/modele/comportement/Migrateur.java | 19 +++ .../tp2/modele/comportement/SubitClimat.java | 8 ++ .../clfreville2/tp2/modele/impl/Animal.java | 34 +++++ .../clfreville2/tp2/modele/impl/Oiseau.java | 23 ++++ .../iut/clfreville2/tp2/modele/impl/Ours.java | 34 +++++ .../persistance/FileReaderPersistance.java | 46 +++++++ .../persistance/FileWriterPersistance.java | 57 ++++++++ .../tp2/persistance/ReadPersistance.java | 12 ++ .../tp2/persistance/StubReadPersistance.java | 14 ++ .../tp2/persistance/WritePersistance.java | 12 ++ 2A/Java/tp/tp2-zoo/tp2-zoo.iml | 11 ++ 2A/Java/tp/tp3-vehicules/.idea/.gitignore | 3 + 2A/Java/tp/tp3-vehicules/.idea/misc.xml | 6 + 2A/Java/tp/tp3-vehicules/.idea/modules.xml | 8 ++ 2A/Java/tp/tp3-vehicules/.idea/uiDesigner.xml | 124 ++++++++++++++++++ 2A/Java/tp/tp3-vehicules/garage.bin | Bin 0 -> 354 bytes 2A/Java/tp/tp3-vehicules/garage.txt | 3 + .../fr/uca/iut/clfreville2/tp3/Main.class | Bin 0 -> 7198 bytes .../tp3/cli/CommandLineInterface.class | Bin 0 -> 1571 bytes .../tp3/factory/ActionFactory$Builder.class | Bin 0 -> 612 bytes .../tp3/factory/ActionFactory.class | Bin 0 -> 927 bytes .../ActionFactoryImpl$ThisBuilder.class | Bin 0 -> 1751 bytes .../tp3/factory/ActionFactoryImpl.class | Bin 0 -> 2240 bytes .../tp3/factory/VehiculeFactory$Builder.class | Bin 0 -> 730 bytes .../tp3/factory/VehiculeFactory$Context.class | Bin 0 -> 410 bytes .../tp3/factory/VehiculeFactory.class | Bin 0 -> 1112 bytes .../tp3/factory/VehiculeFactoryImpl$1.class | Bin 0 -> 1454 bytes .../VehiculeFactoryImpl$ThisBuilder.class | Bin 0 -> 2210 bytes .../tp3/factory/VehiculeFactoryImpl.class | Bin 0 -> 2884 bytes .../iut/clfreville2/tp3/io/Afficheur.class | Bin 0 -> 197 bytes .../clfreville2/tp3/io/AfficheurConsole.class | Bin 0 -> 941 bytes .../clfreville2/tp3/io/NoopAfficheur.class | Bin 0 -> 588 bytes .../iut/clfreville2/tp3/io/Saisisseur.class | Bin 0 -> 204 bytes .../tp3/io/SaisisseurConsole.class | Bin 0 -> 1213 bytes .../iut/clfreville2/tp3/modele/Camion.class | Bin 0 -> 1618 bytes .../clfreville2/tp3/modele/Camionnette.class | Bin 0 -> 376 bytes .../iut/clfreville2/tp3/modele/Garage.class | Bin 0 -> 1393 bytes .../iut/clfreville2/tp3/modele/Vehicule.class | Bin 0 -> 159 bytes .../iut/clfreville2/tp3/modele/Voiture.class | Bin 0 -> 1635 bytes .../persistance/BinaryFilePersistance.class | Bin 0 -> 4019 bytes .../tp3/persistance/ChargeurGarage.class | Bin 0 -> 388 bytes .../tp3/persistance/NoopSauveurGarage.class | Bin 0 -> 767 bytes .../tp3/persistance/SauveurGarage.class | Bin 0 -> 385 bytes .../tp3/persistance/StubChargeurGarage.class | Bin 0 -> 1110 bytes .../TextFileGaragePersistance.class | Bin 0 -> 4818 bytes .../tp3/persistance/TsvFilePersistance.class | Bin 0 -> 868 bytes .../src/fr/uca/iut/clfreville2/tp3/Main.java | 71 ++++++++++ .../tp3/cli/CommandLineInterface.java | 35 +++++ .../tp3/factory/ActionFactory.java | 22 ++++ .../tp3/factory/ActionFactoryImpl.java | 42 ++++++ .../tp3/factory/VehiculeFactory.java | 29 ++++ .../tp3/factory/VehiculeFactoryImpl.java | 70 ++++++++++ .../uca/iut/clfreville2/tp3/io/Afficheur.java | 8 ++ .../clfreville2/tp3/io/AfficheurConsole.java | 28 ++++ .../iut/clfreville2/tp3/io/NoopAfficheur.java | 13 ++ .../iut/clfreville2/tp3/io/Saisisseur.java | 8 ++ .../clfreville2/tp3/io/SaisisseurConsole.java | 36 +++++ .../iut/clfreville2/tp3/modele/Camion.java | 9 ++ .../clfreville2/tp3/modele/Camionnette.java | 5 + .../iut/clfreville2/tp3/modele/Garage.java | 25 ++++ .../iut/clfreville2/tp3/modele/Vehicule.java | 6 + .../iut/clfreville2/tp3/modele/Voiture.java | 10 ++ .../persistance/BinaryFilePersistance.java | 48 +++++++ .../tp3/persistance/ChargeurGarage.java | 12 ++ .../tp3/persistance/NoopSauveurGarage.java | 13 ++ .../tp3/persistance/SauveurGarage.java | 12 ++ .../tp3/persistance/StubChargeurGarage.java | 18 +++ .../TextFileGaragePersistance.java | 63 +++++++++ .../tp3/persistance/TsvFilePersistance.java | 21 +++ 2A/Java/tp/tp3-vehicules/tp3-vehicules.iml | 11 ++ 2A/Java/tp/tp4-fichier/.idea/.gitignore | 3 + 2A/Java/tp/tp4-fichier/.idea/misc.xml | 6 + 2A/Java/tp/tp4-fichier/.idea/modules.xml | 8 ++ 2A/Java/tp/tp4-fichier/.idea/uiDesigner.xml | 124 ++++++++++++++++++ .../iut/clfreville2/sgf/io/Dump$Visitor.class | Bin 0 -> 2594 bytes .../fr/uca/iut/clfreville2/sgf/io/Dump.class | Bin 0 -> 1459 bytes .../clfreville2/sgf/model/ConsoleStream.class | Bin 0 -> 1004 bytes .../iut/clfreville2/sgf/model/Directory.class | Bin 0 -> 3017 bytes .../uca/iut/clfreville2/sgf/model/File.class | Bin 0 -> 2684 bytes .../uca/iut/clfreville2/sgf/model/Inode.class | Bin 0 -> 1485 bytes .../iut/clfreville2/sgf/model/Partition.class | Bin 0 -> 2475 bytes .../clfreville2/sgf/model/Permissible.class | Bin 0 -> 164 bytes .../clfreville2/sgf/model/Permissions.class | Bin 0 -> 537 bytes .../sgf/model/WritableStream.class | Bin 0 -> 197 bytes .../sgf/visitor/InodeVisitor.class | Bin 0 -> 280 bytes .../iut/clfreville2/shell/CommandInput.class | Bin 0 -> 171 bytes .../clfreville2/shell/FileCommandInput.class | Bin 0 -> 1040 bytes .../fr/uca/iut/clfreville2/shell/Main.class | Bin 0 -> 1962 bytes .../fr/uca/iut/clfreville2/shell/Shell.class | Bin 0 -> 2871 bytes .../clfreville2/shell/UserCommandInput.class | Bin 0 -> 683 bytes .../clfreville2/shell/command/Command.class | Bin 0 -> 283 bytes .../shell/command/DumpCommand.class | Bin 0 -> 1859 bytes .../shell/command/LsRCommand$Visitor.class | Bin 0 -> 2461 bytes .../shell/command/LsRCommand.class | Bin 0 -> 1108 bytes .../shell/command/StatCommand.class | Bin 0 -> 1773 bytes .../shell/model/ExecutionContext.class | Bin 0 -> 2908 bytes 2A/Java/tp/tp4-fichier/shell.sh | 2 + .../fr/uca/iut/clfreville2/sgf/io/Dump.java | 73 +++++++++++ .../clfreville2/sgf/model/ConsoleStream.java | 30 +++++ .../iut/clfreville2/sgf/model/Directory.java | 48 +++++++ .../uca/iut/clfreville2/sgf/model/File.java | 53 ++++++++ .../uca/iut/clfreville2/sgf/model/Inode.java | 59 +++++++++ .../iut/clfreville2/sgf/model/Partition.java | 19 +++ .../clfreville2/sgf/model/Permissible.java | 6 + .../clfreville2/sgf/model/Permissions.java | 14 ++ .../clfreville2/sgf/model/WritableStream.java | 8 ++ .../clfreville2/sgf/visitor/InodeVisitor.java | 11 ++ .../iut/clfreville2/shell/CommandInput.java | 6 + .../clfreville2/shell/FileCommandInput.java | 24 ++++ .../fr/uca/iut/clfreville2/shell/Main.java | 33 +++++ .../fr/uca/iut/clfreville2/shell/Shell.java | 49 +++++++ .../clfreville2/shell/UserCommandInput.java | 12 ++ .../clfreville2/shell/command/Command.java | 9 ++ .../shell/command/DumpCommand.java | 18 +++ .../clfreville2/shell/command/LsRCommand.java | 53 ++++++++ .../shell/command/StatCommand.java | 22 ++++ .../shell/model/ExecutionContext.java | 10 ++ 2A/Java/tp/tp4-fichier/tp4-fichier.iml | 11 ++ 220 files changed, 3053 insertions(+) create mode 160000 2A/Java/tp/tp-temperature create mode 100644 2A/Java/tp/tp1-intro/.idea/.gitignore create mode 100644 2A/Java/tp/tp1-intro/.idea/misc.xml create mode 100644 2A/Java/tp/tp1-intro/.idea/modules.xml create mode 100644 2A/Java/tp/tp1-intro/.idea/uiDesigner.xml create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/Main.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/cli/Action.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface$1.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/Afficheur.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/AfficheurConsole.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/Saisisseur.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/SaisisseurConsole.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/model/Patient.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/model/Repertoire.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/Persistance.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.class create mode 100644 2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/WriterPersistance.class create mode 100644 2A/Java/tp/tp1-intro/repertoire.txt create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/Main.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/Action.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Afficheur.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/AfficheurConsole.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Saisisseur.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/SaisisseurConsole.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Patient.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Repertoire.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/Persistance.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.java create mode 100644 2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/WriterPersistance.java create mode 100644 2A/Java/tp/tp1-intro/tp1-intro.iml create mode 100644 2A/Java/tp/tp2-zoo/.idea/.gitignore create mode 100644 2A/Java/tp/tp2-zoo/.idea/misc.xml create mode 100644 2A/Java/tp/tp2-zoo/.idea/modules.xml create mode 100644 2A/Java/tp/tp2-zoo/.idea/uiDesigner.xml create mode 100644 2A/Java/tp/tp2-zoo/animalerie.txt create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/Main.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/CommandLineInterface.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry$Builder.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl$ThisBuilder.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/PasserCommande.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory$AnimalSupplier.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory$Builder.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl$ThisBuilder.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Afficheur.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/AfficheurConsole.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Saisisseur.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/Animalerie.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/Climat.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/Lieu.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/Hibernateur.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/Migrateur.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Animal.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/StubReadPersistance.class create mode 100644 2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.class create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/Main.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/CommandLineInterface.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/PasserCommande.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Afficheur.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AfficheurConsole.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Saisisseur.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Animalerie.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Climat.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Lieu.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Hibernateur.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Migrateur.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Animal.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/StubReadPersistance.java create mode 100644 2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.java create mode 100644 2A/Java/tp/tp2-zoo/tp2-zoo.iml create mode 100644 2A/Java/tp/tp3-vehicules/.idea/.gitignore create mode 100644 2A/Java/tp/tp3-vehicules/.idea/misc.xml create mode 100644 2A/Java/tp/tp3-vehicules/.idea/modules.xml create mode 100644 2A/Java/tp/tp3-vehicules/.idea/uiDesigner.xml create mode 100644 2A/Java/tp/tp3-vehicules/garage.bin create mode 100644 2A/Java/tp/tp3-vehicules/garage.txt create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/Main.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/cli/CommandLineInterface.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory$Builder.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl$ThisBuilder.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory$Builder.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory$Context.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$1.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$ThisBuilder.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Afficheur.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/AfficheurConsole.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Saisisseur.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Camion.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Camionnette.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Garage.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Vehicule.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Voiture.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/BinaryFilePersistance.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/SauveurGarage.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/TextFileGaragePersistance.class create mode 100644 2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.class create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/Main.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/cli/CommandLineInterface.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Afficheur.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/AfficheurConsole.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Saisisseur.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camion.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camionnette.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Garage.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Vehicule.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Voiture.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/BinaryFilePersistance.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/SauveurGarage.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TextFileGaragePersistance.java create mode 100644 2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.java create mode 100644 2A/Java/tp/tp3-vehicules/tp3-vehicules.iml create mode 100644 2A/Java/tp/tp4-fichier/.idea/.gitignore create mode 100644 2A/Java/tp/tp4-fichier/.idea/misc.xml create mode 100644 2A/Java/tp/tp4-fichier/.idea/modules.xml create mode 100644 2A/Java/tp/tp4-fichier/.idea/uiDesigner.xml create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump$Visitor.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Directory.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/File.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Inode.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Partition.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Permissible.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Permissions.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/WritableStream.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/visitor/InodeVisitor.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/CommandInput.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/FileCommandInput.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Main.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Shell.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/UserCommandInput.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/Command.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/DumpCommand.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/LsRCommand$Visitor.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/LsRCommand.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/StatCommand.class create mode 100644 2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/model/ExecutionContext.class create mode 100644 2A/Java/tp/tp4-fichier/shell.sh create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/io/Dump.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Directory.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/File.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Inode.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Partition.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissible.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissions.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/WritableStream.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/visitor/InodeVisitor.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/CommandInput.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/FileCommandInput.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Main.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Shell.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/UserCommandInput.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/Command.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/DumpCommand.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/LsRCommand.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/StatCommand.java create mode 100644 2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/model/ExecutionContext.java create mode 100644 2A/Java/tp/tp4-fichier/tp4-fichier.iml diff --git a/2A/Java/tp/tp-temperature b/2A/Java/tp/tp-temperature new file mode 160000 index 0000000..53d3626 --- /dev/null +++ b/2A/Java/tp/tp-temperature @@ -0,0 +1 @@ +Subproject commit 53d3626c450ef57e3c5019145feb31b3b4813946 diff --git a/2A/Java/tp/tp1-intro/.idea/.gitignore b/2A/Java/tp/tp1-intro/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/2A/Java/tp/tp1-intro/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/2A/Java/tp/tp1-intro/.idea/misc.xml b/2A/Java/tp/tp1-intro/.idea/misc.xml new file mode 100644 index 0000000..0c94973 --- /dev/null +++ b/2A/Java/tp/tp1-intro/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp1-intro/.idea/modules.xml b/2A/Java/tp/tp1-intro/.idea/modules.xml new file mode 100644 index 0000000..c341d1f --- /dev/null +++ b/2A/Java/tp/tp1-intro/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp1-intro/.idea/uiDesigner.xml b/2A/Java/tp/tp1-intro/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/2A/Java/tp/tp1-intro/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/Main.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..a2aaa609833ac0621a404e05c577baf362d2bbbd GIT binary patch literal 1104 zcma)5TWb?R6#gbjyUm(5HEHYJwqBDIGgQHsl!62VAzm;NDZV(_%%)TJQf6n1f6EsG zF8BldL%xY;qLB5%+I=`@&N=gaGyBasU%!9;0^ksPE=njnsMN58Wrp<=aVB^mqA7nl zK9QbbSUymZGKUQ1R(s@Nh2fE}dFlzSQp3H#*YZpSfqcl#=|07Z_v0`W(PW?^`7AP0 z`@)kBT!w=J;HlJ!N{om+$%iH#4`MNq`qd)qqH1rt%JBG{G*49^e#qTK&hBN@qOhT%T)K{D2W3CHY{+9ffoaZLeZZmdE_R_E*xC3 zuX2^)TWe52kyq|7)q3YezSWAJDkoPV@=uitH|NFq-^PU)z4pjzaJ_~bwlf|1L3*j7 zM%rfBE|BB7P!U6=Pw&W3w@vsW4aZWy5#xX|jX~^*U?jA%@vmgX9IJ$3w@56@+auy| z&cD@qH(1Qd&}bD+>BdwSdP-Eyf0P;AVVr7D+Qww4TE?y=!9H%%9NMo0W+##C4n>?i zBfr#{fqk5pcgfl^;Nlk9+RqKRjXM-oaToU}vqS6mSee(l8JwdG)uS0MWT=r_%TOnG rF++pgMutstmu9&93D*{ua9e%?43dTz;ta{s>+O22y!(EqRI8M?Y7C3jfkX_hqG(8Pm22e}m5>N` z4QbFsf@;MKxlHc6rXk6FBW8VPXSed^GClW>Xh?If{I*`HQ7E@v*Kh-4WSei4s`awT zka;&?ohrsLA!AI#ByKUpY_H`zq?pN853LhR_bmTF-`+cP?7&bljoUKrXqdrWs`HXi z_B%(E{>1V+&h|dTS|${|=~>6eM#x|WZP!0A!Wp=L(4W&Vj|GN!!S&ss$S@X`>PJ?x z4FxfkI-gUJP@pMDDoAs~0}ad2`6xs&#|*hlcF95zF`+OjRLVYOYZ)|Zrg>xh)oS4Tvf7<_c8iG=AM_*T$q6EB*{HfXsD zw6eVst%m~nAPWPQQ#2SjCE;l&3G5XW>fAWWnS$_!85G)g@V4&tM8hLyt@QaUsP<47|s_d{#oa!U?k z%k}!9IG3I$Hm&$VFl_x}S0y+- z<$kX&ePR2t2>aX><_5zP(|IRj_qf5&%zkK+T9ee8BWg`jOIVt})s7w7S@Jn)U<72Sh;Lm7picxVp^d;Iu2k4)1!DnW+aZ_YQa{6~0VPI5BtM z(*0iIoD&Q}SJb51vGBKdSyvk9{HpJIK_va7hKP@Yo{mQhPygec$wE^^@yj40H-_!| zBCL2kibRxOqF=N`f0yM8>K~~UW$xnvMU&8bq-X`yzJgtR&wYmeNsWmwnATb!puI}q zJi+lHTqKwt!rKJ(1b&2uEM_r}8z>ORLyARgVvFK4l(9oGg=OMPC#*&40KFNg3z$RZ iwN4$4KPNh~lyt3Nm7<07G7)&e!KV=k&=RfB*6u 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 E2WGKNJ^%m! literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/Saisisseur.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/io/Saisisseur.class new file mode 100644 index 0000000000000000000000000000000000000000..2590f5289065b0e0cb5d4358fed35d2feea67871 GIT binary patch literal 244 zcmaKnJqp4=5QX3P7mc769>O#Z+6sb=m12<-teZ8Atch$k9?rr8cqnm$f}Q0&zQ_CK z`MN&=uBk(qrNj_EAf{gBi$2GcG_&k8p8M|G;fA_ Y1VTIf1GIu)7d0tT#L*`( za9}(!blY$q>$NXE-#iqESdPF*B@kFmz3d#d{F?8Y#$hRi1d<9;Dqeyrpg(f;R>RP( zmajMLN3QwAvTbu#_m5_DYSs+PvpmmixvNdbYuctj--6{>{*u60?otE!ofOi@C>W3? z1~2%xv3p=Pe1T{#zoTGCU@&m8>L+bl_cG`yzbbzBjMIp!C1U^tf#!NRopuH`%?)&wRMTvc%m zQy2VZ?s!2Uv2S?$tIa*8fgzL=m=+L*)XS?Vpvdf)$1TJ5nEmt4gmIVhpCs@WHOvHb zE_MPlT)YI{=5n0G9Of0gtKt^k6PW5znTBoYD-GXjvdo#42OHbV7dnka3R9e^SdO{gI@~qgx-6xDR%td2d&h7s$#)K8{=UV8&-9A= zf`Lvemsl+?7z(ylx0hw(m@eCfVonVAY=wV1y(1M!?U{#$vu9SDY^QXGabFZA&;IHW zZ?}GQqQB-FjnAvbQ74{Mt=V!L<~>VBoc-4X-jE~1j!SUL1n!YEIVgM@;@orM_`gqX zp09-9nkcj(&Y=9jeFSCxQ(S=zIHGvKof_W5hp3Q~81h77R1pjA4i?VPU-${y$Hg-Y z|A>(;SQ=4Y)Oc}-aKiy$HdN{Wf-Y6jM@R|1-V6HWOQ5ra9wqeHe?V_wGk|`GD;?0XNh~E?v}S11_#C zj(Hh=E3MNE9ztpw3{QjaqD8%G%j>+35 HAHmMwVF_Ru literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/model/Patient.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/model/Patient.class new file mode 100644 index 0000000000000000000000000000000000000000..5f238c14e812cbebf91eb247a9d5e302ffca7589 GIT binary patch literal 2038 zcmb_d+fvg|6kVs3rj%fzg7*t5YAIsGyB1NYqG(Y^6le75kRBkC=G5er8UMtO@Ihz1 z%<$j`_)(7g^rVmiIymD4X|m5=Ywx|XvibRI{Re<4Jk246E(>WJ-N-QXzvXM(@p-W9 zJQuDEYYdr5FYwe9LsxNhp$A#?SjgGvh0Rc03Z16Q9j~bz*Ix?7n&c7 z?>ytm6M-U{MkoSVXDC!RYs{QhB}%u0ES*AUp5*d ztnf%M3>HVXlNM;e{WcEZAjAGTUlkP@xLm#R)C%22iU%rUxL(|j+#cDHp5d^KBRI;C zRkGdKRI$2SP0D{@J#J$dCx~^0N7QPK1|0tv*4Y9WPT3g2X_8&MYjU3kz5Ndq2?3ri zz7?)2kG^I&yE~~C7}BQeeANrYlV*KUgfIA_PjeKi(&hdF4?X=H2h(cBqXtX67mh43 zC)A3pJ>wy-3nfCr_tr$@EeGT`8MMqg%P^E|IWY>8oj#0@7;^Kn8MZv8@op=l?mP9`2rq+|X-~fXOi{K98bg zV28OobTR^We1x$sSktS!jv>10N@XI{sRN}iROAc# zzM+2|`+!drOxDV@YS|_^t~EeQvQ0EWCz{AAt>e&kxM|hEtqu4v&J#%Yk%S)uK5nVL zGkgS244i3k+YD0@|C1jy zQ4vY}0sbiCncan6_yBz9b~-!fIp=-P%=GWS-+us<@Z3ZUaRUhp7cjt(+Hv+A+jYE# z{dRkYR~5rRQFua?7~LsGp9D!; zJUvHeH&K!?$?IHlugYcQ4>hMn6Mj=C>PU<>1+_SMm9A0LiO4f~ z58$XX=Y*_x35@n>*UV8@&j~d*{I;y}S3>t{wBz=YHWM?nD`Q|-pwGCz0O)&(E}0l? zI*Lr+FZ8?{Tsv_Z0jc~xSpE>k<~|00!2A}hUZ$tMl|Z}%hOt5;D_oCzSfyVK_mPQM z72?KeE|dQb^AM@c`GtLqA7CPekNrHl6)+a?ro)(sN6~nIhe3`E9??kac#J1ej`vZH zbYG6EF?^xaG3b)DI1SR}hWPX`K7EW&ALHrtQlz$Hg(7uqQsaN&`d1ovGpD*NNJh-i n*aF4T!Hzhq5y#B`#H|Bl8Tv`HT_m%IR3t{od`kZcI{&l(scdn& literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..b30bac0076bc5004b1b68e4ce9c6c334508c54d6 GIT binary patch literal 2537 zcma)7Yf}?f7=8`}PFPk{6ui{CwT1+Upjb85Rw=Qx5Ta4M^tvP`u$t_yn+?*-AL%dP zvojXPI#c_(pZa&&nbtlh+1#L$@xz|mzPIOj-}9b7{{8hg05|Yc6g>h%zVehGxVEn* zgN?vI1bq_yCM2Q)my3R~nzxd6HAv=5MPIGkrIMOX2HsSXY8AT@SWaFg({@Q^TYG{2 z>$YPDHv~pv3s0=D@45?NY#qVj=2Z)|LNfWhoF zu@CzNqD8vMSY;(JyxXG00iM^a*lsPFyUHpk-@vejGb)hmf`lqL%O;qLs`|68Q*lem zzz7cO@Qw%^2r*EuZk7lJ@g9yz95-DAmY@HI}4|NYf=(- zx|d?TTta*XvdEdZr|Y-Zamxml@j&9CiAQ+cKt{srOz}=zo~In*3X6XX?UW@)tJ7V|yuH_S^qI&kFMz<_1=~@X zYI#NZ_jDza)de?im6k2v*8A`<60F(G>Xn6ebhV?crO1AXjZ)x3tec6Qmy%V^YhP)$ z7&6#Ro$R&R5q-)MJ0d$1`(*vnQXuR@0zGPjO}2U7b~&hNw3@rXL^q$iLgo$51y=s) zqUD9;^{c#J124TsU+D^?qt+NqRO_!>w$qNIURyfUoLlwtN;A%`xP$mfeZ_f6BYZXl z^8AMNtH5V0!Zn`|j*7b(^l$~p_^{YU?+Y$_P~>QE1`ePf2eHbPSr@|^Z0@v)XlNo$ zNiA!{w=ob;{DPsDl_B)<&nTT9!T=7}EREKsLrdC|4vdwJCwN-7DPq*?qh|Ish9AXW zVrUx&7hhxK(fBqFWfBvwaFpq(jaxW1zJ(7qF_NjzgV!PxMzDl|*Lt4AMS9lwCo#zJ7^RQ%T{}UYlhis!nKP6=iCdiK za0+RXyo9qgWS1E82+@>KrWF&@aNrVcn%F%&tKrTzacAM9Lc9U}T!DN`^Su%giPMsg zijYXWCCl80M?9#V%D*7kPN!xiE)Gz?+GK4eWX*ext08Nt#l#k_zrrU18S<4D_?g7K z!h*o>$X<(#Yo_jQ;r{TK9Q5XEz4?yAgUz>plF^lrS;;j7sp8y!|(((>rP8c?XR(3V)!>9{l(pg{@~T literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..09e721b7d53563e914aa0614889ec7b8982c1584 GIT binary patch literal 220 zcmaKmF$%&!6hvn=CTeBn8MN`Ml^|GJ1r!DQb@L+|)@;~paySbQ;Gx7#Wg*xM!)NBd zdA%P`06UBl^aM7!qee;6jVEPt$E`Mo*W{}eRqSeAds!-`)XI$A@q0-S2}}yvN;0y% z(cxOK@&b|3js=#p^v~zJ&DhY11Hs#n-_9=red KokJ3|hv5gIdp}zM literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..2063557549026ea776a9334e0016e6cd0ffcaa6e GIT binary patch literal 618 zcmb7?&q@O^5XQghzty!`t=fY(Z>^wFK@eJc5j>SDD)pSMsivg6OPcL_c@jMM06vsB zX^VmusfT>S%;YzjWb*#;`UaqlT8JF-0SaXlQ6g*(930;05$NO_y1H+Uq)NdA0!?sIbT109&jcKI4`1v7cZ#1#7e99Q0@v+pL70DY*Ly DX1$&7 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/Persistance.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/Persistance.class new file mode 100644 index 0000000000000000000000000000000000000000..5dd48c4aed3fa9101de0e035def3e59d27d24188 GIT binary patch literal 270 zcma)%I}XAy5Jbo3V+ai=VMQt`N-89fD5#CuM2@T^a_k(Af&*|UgsC81n$=7(Pj6rE z#}mLFD+MW#7oMWgWMd%X3eUZDj&lm_mRk0m?Sifi)A^SbrUL6q_nMrpOFG>uHbG%7 yup3D`Hu}zfz+8-9U%d^3wLo@hqBnf7j+5ITc=Pp4W&#sP%%IZmNNt&}MD_t0dQ$WN literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.class b/2A/Java/tp/tp1-intro/out/production/tp1-intro/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..8d7266739cbcac07e5aad39b2340814ff5e297d0 GIT binary patch literal 795 zcmb7CO-}+b5PcPN0a0L8{QkU%60LeN!En&T)A|uH+{;p+r0kl~^?!NM#DhP;A7z|H z6O0<7mzmB?-+R;PyuLlZ0H|UsgE1r=B(oUD1Vg?n?giH(X!EN^SNfJ=;zR|?Rv8kd zoq7r>hUBe@{1h@&yAXay1sP;9^W}}7|iY93evkr<3$A4t_fu^~f(c>6$o(kk;)N4p{D;k6+H!?d^>2+q9&SE{w{;S03C=63wYjQff z(e9G6@d^c2W2}zcK`qY literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp1-intro/repertoire.txt b/2A/Java/tp/tp1-intro/repertoire.txt new file mode 100644 index 0000000..23c98b0 --- /dev/null +++ b/2A/Java/tp/tp1-intro/repertoire.txt @@ -0,0 +1,2 @@ +Machin Truc +Bidule Machin diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/Main.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/Main.java new file mode 100644 index 0000000..8d3dded --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/Main.java @@ -0,0 +1,21 @@ +package fr.uca.iut.clfreville2.tp1; + +import fr.uca.iut.clfreville2.tp1.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp1.io.AfficheurConsole; +import fr.uca.iut.clfreville2.tp1.io.SaisisseurConsole; +import fr.uca.iut.clfreville2.tp1.model.Repertoire; +import fr.uca.iut.clfreville2.tp1.persistance.FilePersistance; +import fr.uca.iut.clfreville2.tp1.persistance.StubLoaderPersistance; + +public final class Main { + + public static void main(String[] args) { + new CommandLineInterface( + new StubLoaderPersistance(), + new FilePersistance(), + new Repertoire(), + new AfficheurConsole(), + new SaisisseurConsole() + ).execute(); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/Action.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/Action.java new file mode 100644 index 0000000..f0382d1 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/Action.java @@ -0,0 +1,21 @@ +package fr.uca.iut.clfreville2.tp1.cli; + +import java.util.Arrays; + +public enum Action { + AJOUTER_PATIENT('a'), + EDITER_PATIENT('e'), + LISTER_PATIENTS('l'), + SUPPRIMER_PATIENT('s'), + QUITTER('q'); + + private final char identificateur; + + Action(char identificateur) { + this.identificateur = identificateur; + } + + public static Action fromIdentificateur(char c) { + return Arrays.stream(values()).filter(a -> a.identificateur == c).findFirst().orElse(null); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface.java new file mode 100644 index 0000000..d5c1ba6 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/cli/CommandLineInterface.java @@ -0,0 +1,80 @@ +package fr.uca.iut.clfreville2.tp1.cli; + +import fr.uca.iut.clfreville2.tp1.io.Afficheur; +import fr.uca.iut.clfreville2.tp1.io.Saisisseur; +import fr.uca.iut.clfreville2.tp1.model.Patient; +import fr.uca.iut.clfreville2.tp1.model.Repertoire; +import fr.uca.iut.clfreville2.tp1.persistance.LoaderPersistance; +import fr.uca.iut.clfreville2.tp1.persistance.WriterPersistance; + +public final class CommandLineInterface { + + private final Repertoire repertoire; + private final Afficheur afficheur; + private final Saisisseur saisisseur; + private final LoaderPersistance loaderPersistance; + private final WriterPersistance writerPersistance; + + public CommandLineInterface(LoaderPersistance loaderPersistance, WriterPersistance writerPersistance, Repertoire repertoire, Afficheur afficheur, Saisisseur saisisseur) { + this.repertoire = repertoire; + this.afficheur = afficheur; + this.saisisseur = saisisseur; + this.loaderPersistance = loaderPersistance; + this.writerPersistance = writerPersistance; + } + + /** + * Exécute l'application en ligne de commande. + */ + public void execute() { + loaderPersistance.lire(repertoire); + afficheur.afficherIntroduction(); + afficheur.afficherDemande("l'action à effectuer"); + Action action; + while ((action = saisisseur.demanderAction()) != Action.QUITTER) { + if (action == null) { + afficheur.afficherErreur("Action inconnue !"); + continue; + } + switch (action) { + case AJOUTER_PATIENT -> gererAjoutPatient(); + case EDITER_PATIENT -> gererModificationPatient(); + case LISTER_PATIENTS -> afficheur.afficherPatients(repertoire); + case SUPPRIMER_PATIENT -> gererSuppressionPatient(); + } + } + writerPersistance.ecrire(repertoire); + } + + private void gererAjoutPatient() { + Patient patient = demanderInfosPatient(); + repertoire.referencerPatient(patient.prenom(), patient.nom()); + afficheur.afficherSucces("Le patient a bien été rajouté."); + } + + private void gererSuppressionPatient() { + Patient patient = demanderInfosPatient(); + if (repertoire.dereferencerPatient(patient.prenom(), patient.nom())) { + afficheur.afficherSucces("Le patient a bien été supprimé."); + } else { + afficheur.afficherErreur("Le patient n'existe pas et ne peut pas être supprimé."); + } + } + + private void gererModificationPatient() { + Patient patient = demanderInfosPatient(); + if (!repertoire.dereferencerPatient(patient.prenom(), patient.nom())) { + afficheur.afficherErreur("Le patient n'existe pas et ne peut pas être édité."); + return; + } + gererAjoutPatient(); + } + + private Patient demanderInfosPatient() { + afficheur.afficherDemande("le prénom du patient"); + String prenom = saisisseur.demandeMot(); + afficheur.afficherDemande("le nom du patient"); + String nom = saisisseur.demandeMot(); + return new Patient(prenom, nom); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Afficheur.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Afficheur.java new file mode 100644 index 0000000..28b1ace --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Afficheur.java @@ -0,0 +1,56 @@ +package fr.uca.iut.clfreville2.tp1.io; + +import fr.uca.iut.clfreville2.tp1.model.Patient; +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +/** + * Affiche des informations à l'écran. + *

+ * Son implémentation principale est {@link AfficheurConsole}. + */ +public interface Afficheur { + + /** + * Affiche le texte présentant les actions réalisables par l'utilisateur. + */ + void afficherIntroduction(); + + /** + * Affiche les informations d'un unique patient. + * + * @param patient Le patient à afficher. + */ + void afficherPatient(Patient patient); + + /** + * Affiche la liste des patients contenus dans un répertoire. + *

+ * Par défaut, affiche un à un les patients. + * + * @param repertoire Le répertoire à utiliser. + */ + default void afficherPatients(Repertoire repertoire) { + repertoire.getPatients().forEach(this::afficherPatient); + } + + /** + * Préparer le texte de demande d'une information à l'utilisateur. + * + * @param objet L'objet de la demande. + */ + void afficherDemande(String objet); + + /** + * Affiche un message de succès. + * + * @param message Le message de succès. + */ + void afficherSucces(String message); + + /** + * Affiche un message d'erreur. + * + * @param message Le message d'erreur. + */ + void afficherErreur(String message); +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/AfficheurConsole.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/AfficheurConsole.java new file mode 100644 index 0000000..bc1d327 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/AfficheurConsole.java @@ -0,0 +1,50 @@ +package fr.uca.iut.clfreville2.tp1.io; + +import fr.uca.iut.clfreville2.tp1.model.Patient; +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +public class AfficheurConsole implements Afficheur { + + private static final String DESCRIPTION_MENU = """ + Système de gestion des patients 3000 + ==================================== + a : Ajouter un nouveau patient + l : Lister les patients + s : Supprimer un patient + q : Quitter + """; + + @Override + public void afficherIntroduction() { + System.out.print(DESCRIPTION_MENU); + } + + @Override + public void afficherPatient(Patient patient) { + System.out.println(patient.designation()); + } + + @Override + public void afficherPatients(Repertoire repertoire) { + if (repertoire.getPatients().isEmpty()) { + System.out.println("Répertoire vide !"); + } else { + Afficheur.super.afficherPatients(repertoire); + } + } + + @Override + public void afficherDemande(String objet) { + System.out.println("Veuillez saisir " + objet + " : "); + } + + @Override + public void afficherSucces(String message) { + System.out.println(message); + } + + @Override + public void afficherErreur(String message) { + System.err.println(message); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Saisisseur.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Saisisseur.java new file mode 100644 index 0000000..199bfba --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/Saisisseur.java @@ -0,0 +1,10 @@ +package fr.uca.iut.clfreville2.tp1.io; + +import fr.uca.iut.clfreville2.tp1.cli.Action; + +public interface Saisisseur { + + String demandeMot(); + + Action demanderAction(); +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/SaisisseurConsole.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/SaisisseurConsole.java new file mode 100644 index 0000000..17c9e89 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/io/SaisisseurConsole.java @@ -0,0 +1,42 @@ +package fr.uca.iut.clfreville2.tp1.io; + +import fr.uca.iut.clfreville2.tp1.cli.Action; + +import java.io.InputStream; +import java.io.Reader; +import java.util.Scanner; + +public class SaisisseurConsole implements Saisisseur { + + private final Scanner scanner; + + + public SaisisseurConsole() { + this(System.in); + } + + public SaisisseurConsole(InputStream stream) { + scanner = new Scanner(stream); + } + + public SaisisseurConsole(Reader reader) { + scanner = new Scanner(reader); + } + + @Override + public String demandeMot() { + return scanner.next(); + } + + @Override + public Action demanderAction() { + return switch (scanner.next()) { + case "a" -> Action.AJOUTER_PATIENT; + case "e" -> Action.EDITER_PATIENT; + case "l" -> Action.LISTER_PATIENTS; + case "s" -> Action.SUPPRIMER_PATIENT; + case "q" -> Action.QUITTER; + default -> null; + }; + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Patient.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Patient.java new file mode 100644 index 0000000..154ce2b --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Patient.java @@ -0,0 +1,9 @@ +package fr.uca.iut.clfreville2.tp1.model; + +// Pour les curieux, un record est une classe finale qui contient déjà une redéfinition de equals() et hashCode() +public record Patient(String prenom, String nom) { + + public String designation() { + return prenom + " " + nom.toUpperCase(); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Repertoire.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Repertoire.java new file mode 100644 index 0000000..368db48 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/model/Repertoire.java @@ -0,0 +1,36 @@ +package fr.uca.iut.clfreville2.tp1.model; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +/** + * Le répertoire possède toutes les informations de contact des patients. + */ +public class Repertoire implements Iterable { + + private final List patients = new ArrayList<>(); + + public void referencerPatient(String prenom, String nom) { + patients.add(new Patient(prenom, nom)); + } + + public boolean dereferencerPatient(String prenom, String nom) { + return patients.remove(new Patient(prenom, nom)); + } + + /** + * Récupère l'ensemble des patients répertoriés. + * + * @return Une vue immuable sur les patients. + */ + public List getPatients() { + return Collections.unmodifiableList(patients); + } + + @Override + public Iterator iterator() { + return getPatients().iterator(); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.java new file mode 100644 index 0000000..1d32d37 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/FilePersistance.java @@ -0,0 +1,46 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +import fr.uca.iut.clfreville2.tp1.io.Saisisseur; +import fr.uca.iut.clfreville2.tp1.io.SaisisseurConsole; +import fr.uca.iut.clfreville2.tp1.model.Patient; +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +import java.io.*; + +/** + * Une persistance écrivant et lisant un fichier. + */ +public class FilePersistance implements Persistance { + + private final String fileName; + + public FilePersistance() { + this("repertoire.txt"); + } + + public FilePersistance(String fileName) { + this.fileName = fileName; + } + + @Override + public void lire(Repertoire repertoire) { + try (Reader lecteur = new FileReader(fileName)) { + Saisisseur saisisseur = new SaisisseurConsole(lecteur); + repertoire.referencerPatient(saisisseur.demandeMot(), saisisseur.demandeMot()); + } catch (FileNotFoundException ignored) { + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + + @Override + public void ecrire(Repertoire repertoire) { + try (Writer ecrivain = new FileWriter(fileName)) { + for (Patient patient : repertoire.getPatients()) { + ecrivain.append(patient.nom()).append(" ").append(patient.prenom()).append("\n"); + } + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.java new file mode 100644 index 0000000..aaf180f --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/LoaderPersistance.java @@ -0,0 +1,11 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +/** + * Quelque chose capable de lire des données depuis quelque part et de les référencer dans un répertoire. + */ +public interface LoaderPersistance { + + void lire(Repertoire repertoire); +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.java new file mode 100644 index 0000000..d945d41 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/NoopWriterPersistance.java @@ -0,0 +1,11 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +@SuppressWarnings("unused") // oui, mieux vaut ne pas l'utiliser de toute façon +public class NoopWriterPersistance implements WriterPersistance { + @Override + public void ecrire(Repertoire repertoire) { + // noop + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/Persistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/Persistance.java new file mode 100644 index 0000000..66e77f9 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/Persistance.java @@ -0,0 +1,7 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +/** + * Un groupe de persistance pouvant être à la fois chargée et sauvegardée. + */ +public interface Persistance extends LoaderPersistance, WriterPersistance { +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.java new file mode 100644 index 0000000..5cc5d9d --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/StubLoaderPersistance.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +public final class StubLoaderPersistance implements LoaderPersistance { + + @Override + public void lire(Repertoire repertoire) { + repertoire.referencerPatient("Truc", "Machin"); + repertoire.referencerPatient("Machin", "Bidule"); + } +} diff --git a/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/WriterPersistance.java b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/WriterPersistance.java new file mode 100644 index 0000000..17beb04 --- /dev/null +++ b/2A/Java/tp/tp1-intro/src/fr/uca/iut/clfreville2/tp1/persistance/WriterPersistance.java @@ -0,0 +1,11 @@ +package fr.uca.iut.clfreville2.tp1.persistance; + +import fr.uca.iut.clfreville2.tp1.model.Repertoire; + +/** + * Quelque chose capable d'écrire quelque part un répertoire de patients. + */ +public interface WriterPersistance { + + void ecrire(Repertoire repertoire); +} diff --git a/2A/Java/tp/tp1-intro/tp1-intro.iml b/2A/Java/tp/tp1-intro/tp1-intro.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/2A/Java/tp/tp1-intro/tp1-intro.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp2-zoo/.idea/.gitignore b/2A/Java/tp/tp2-zoo/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/2A/Java/tp/tp2-zoo/.idea/misc.xml b/2A/Java/tp/tp2-zoo/.idea/misc.xml new file mode 100644 index 0000000..a346fd7 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp2-zoo/.idea/modules.xml b/2A/Java/tp/tp2-zoo/.idea/modules.xml new file mode 100644 index 0000000..cce7859 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp2-zoo/.idea/uiDesigner.xml b/2A/Java/tp/tp2-zoo/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp2-zoo/animalerie.txt b/2A/Java/tp/tp2-zoo/animalerie.txt new file mode 100644 index 0000000..e716a30 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/animalerie.txt @@ -0,0 +1 @@ +ours bidule 9 oiseau machin SUD 5 --end-- \ No newline at end of file diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/Main.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..9fea7da1b571434c852e5a0f32fc43868af8c6df GIT binary patch literal 1467 zcmb7EYflqF6g@)=3u~dZD2k$h&$c{PK#55Si6J2&DQZA#h@Xb(v<%q?ncXE4f0bW^ z*u)>;k22n&VwZ#raW|RC+&kyoJ7?~lU%!9+1h9@(7X!#S$QLk(A%@Z+Kjxm#!;bfE z|4@pAVQ5W-Dp_a9RjN$~!widU?WKZyDos4$x3xT0zAu-(q?U#!_#EM`^Oj zMH1-~QdDTk6Up$>o(Ubo04}(CtGa`G3~QF?M^clF2@i$zHkB`TByUOmzHfCgX=Huy ze>9)8B4IDlOd)4Po-xHU%h*E2rfaq`>ep=SSAun?x%sQE%Eo@Rs5V4aPorf<0&8|z z+_`vJV6|zKdtAU1({{u1ixerz>);u~wB>TQxe6Kb8&Qkur)cW^Z5r%L{ekcMWGOcy z!Tl!J%B=qy^T~mtx}UWj((u-aI5_8@sC;hpUxM94tFTkAHp$O*hp5J{a8r}lw53EvLnD!liv7w?HW(0n@vU}zZBu^mGK;|X?1;7_30v3&|?^(S$% zR{Ke>8!I>po}7*mj0$LHD|Wz$5D+KZu>(6b+^b_8_X+eTh{A|iac5#t%pdU>r8o8u zOs&N3OyJw@B6V~>c5BG%*n=ON{j*Rour z!z!VHxpo}EQ4Pm*99Ir~UxKk}9lAa+sBdZcbPHwtX&p0|rJu}KY^R_sxR-vCfcYA3 z&^H;u=UXw7WyLt56#fl?+=j48I^;=wQ^U7(Jc36Bc7J|O1lpzRN2yrJHQB&3Hz26Y z56o$JTwrt^EKM;jNkln7cYN(pI!6}>0bZ-*LYgPtCHdl%_X8M`d1CZc-K)+7KLb*^F25 zEqTCJ?$y(1*ces?o64N@yntEHEFF=-DX&oOOyl(oev3CWys6_Yye)9&O8dl==ADtb zsZd-(n6YYEbc(g7|JNp}7$_oekW-H%%Y9RxccxOx*HrwtHLJN<1vq=YBx|3q|Hp`A zGHh*+7-QaNI?fE+@_ZM5FR&{0MiU_I)7gSQW;nL|NylsWS(o}t^X`3h_h%hHMY;>m z^5U=R;%_=$QKO`O$aPth994!G;ac26X!uaz?lrn@q&5xz7TB8nl!Y$RF-A$diEU>q zvT8WxE~|#caOJ=kt{l3;l|xgwa@q-3jwf83RBO&P!LPnVE_#&y)V1Yry= zK{K{5p~DzjLbq`Rn;*V}o0o8l(bK$yEk;kv5_*lE^b-0$Bv2E+!|!|0#_ug?#_il~ z#U_%!0lnPafj*902H6Nz`I}awZd`KxJdRclHH5gvW)%|xEX#O+qiV|)3J;(fo1G!f^nJuA5hp?|uBluu~~02~(kjw~`VcqZ@;`g%jC0hB$MKv8CM+N~K5CW2wH!x6Nqk zHhBAe{D9vVc$4F*cx+KL{>e?GJS7N-P$?%u(-NZ*_#uAO09dOB-rW%R$M{JD;EsCW zy$yk1!pjYSx6}hqHUwsT#K1c#q!KS}(0hhgJVyOn1~^1}K3Ibx9Shz@`=5<5JWow3 z4Ez6!uOBwD4_(F_XuyYQ*{pd5kI_A?__%Nd1s+eu$1_)8^H_|I%i!p=!hU4XX(FGY zQD@PMhiITVy2ObpL(Q1rudf1KO)3Y(42{Pk=`^F3^_LMeg^p5d&0H0SvT5k*#KGJW zSH77YS{UhB*E&K}?(eoLZK25a% literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.class new file mode 100644 index 0000000000000000000000000000000000000000..1f39de04b55a88160c904508a9ea753f0e848bbe GIT binary patch literal 1818 zcma)7TT|0O6#llfq_*K!TNN)DywO4-$VJg2h*cDAK?kSrOS&z~qzRKI%=nM=OE z!582BQI01`p`(<*Lw2)g&pG>@@0>mR`_GS`09H^D?Eo`DqpBX_>s1LqFhR1kRkWM6Q>db^yM3 zF8Ho?DUIv6q2Q*9TNq==M?>ryGAO2WMAfErWa+?D7?aQ#G65~3?P_h?(k#2Bt@`P@ zqv9^^QEGkG1FqJ&;o8n8hJ|SGlr3LR|Hq1gcz_87c@+grGR#H<(bEA#!f=Ejwm#b$ig(-B|+BZ9qmwXzFDyA_L7C=ada3mG;Y&3@*Z(R#=Hj9S} z=2XmMfuR_|-zj4%1ioi`bdwn7@=*czh@wzS;t|70h(&V(Prtrs;|i9@T?7vQDjTi3 zz80R{xz$3!Q@Xtuusb%O9!up4HN*N00;BWmr7#^jsDKwJ(~99GUeV|qeNuk>ylvz98YGXJT;W>}97OF1AqN!_X%LlHs z5ANk`-fB~_OL0J$Y~)r7BW)$_pEj%lVZ_#bQ`r&b)8#K^6`ZzJvE1L3i`gR~Q;m(* zt#(Yfn9lwouuEM;l~vO^#n;+ImD4|8op&h-gFE)&rtu-g5h33{=+1{QzO|O!!btDg r6Vji$5(1$gs|R|qxI-l93QRGGn?8o!9vMboIL2|rEM7!CoFv0f<9U8t literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.class new file mode 100644 index 0000000000000000000000000000000000000000..b3b3057f0cb6a980c47c69223281dc330dcb7ad6 GIT binary patch literal 776 zcmb7CT}vB56g@Xdv&lBC)~fx6KKPKlIFJ{?NFEFbLaNY6OCKkjYaE%KgxOi4|H?N( z!5`p{D&EB`ZQs^~-8<(n_uP*?4}Wg&0SxgaLX9vw_bN}cGI>ymJ@U0^*!f87ov?pfn zbjUpuepXC77+3F`2Sce6O`q057kX>MUcC`$*WUF87~h zq_claBl}v-E3S#q7Ec1ThFn5N{Pe0ocrE-I)&;*2{8gCZY2AT--JpIgXTpYjn-YN- fb-a~W!zQ*QHiX^AdpT_gNBDqGXbBVHbF=*jO9$J& literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.class new file mode 100644 index 0000000000000000000000000000000000000000..72cb4c266fe3cbc80d2c6d6a5f7a937f90050eaa GIT binary patch literal 279 zcmaivPiq1}48>pkv#XXuubz5sDRjV-P$-mwP*^Cm;C&pkB{G|pamEkl!4KevDjmh* z(MysS!tcEtes_BSued4EAw1Q=BxjAJXq>MDZ^e6_n7E!~EyguV^WHX%)g_nc5$;xY zYmK-1V?Gxvc9GBxNeR=3>I&=3sYLlhBZt~LetDb|M&E4;j%VVTaQkofd~_m=zmi62 zcrF`Rcz#oDqm9z)hHzh9(#(>&x?VD_;qckC{uC4E`qztTiQ zbcsK}A7wnZl)yGWZ2QpO-qUlR^E~I}{`vdsH-H9SX-Gg(k<@VwGYt77^Vl?O)9D#I z`$yag7-rUmBZ3BlQm%AVq!?x+r!Ww0t|Q0LJn)RrG7S+1 zhGidk{8-pFuNlFhMtfmc{jSk;`+d{t@=v@c{J{IN)gRcU-9zDTgu?D}k0EWvE{X>lw_VpyGy(o4Cc0J@uFP4nm^;raU?|rKx`2QaNu@ahu`w6-8*6!@SJt0z)BY z5G73VmTA1p@b==^ z^@8K}CHYBv$4CsRafdOiTt)y9)hyScwhe`>!dkgpi+J z61WeAR=O(4@*uiF6#4@4)gf5*1nS-p=^xO(Mczev%L@iHph=pDhxDb7{P75nX~$5) zlNf7*pHEJt1|SdG>>7_=7XT!sWaM~c|Iz{{ERKa1jE#{d8T literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..ee0145c2ff770c7ba2a93c0773c3501fc20c40e6 GIT binary patch literal 1366 zcmbtUU2hUW6g{(G7ZxZ56|En&YOQ=|SMkA^B|JzpX+o)y27O(Yflf2*l4Z9^|CJ^h zKOT(F{wU+!WkG1wl=v_^Gk50RbM8HN=f}^l-vHF{M1z8uig+3qu)?r*WFDKkH0^=D z-#y}%$FNcpw(#l$q zCth=0jnY|@ic1WYC1`3W;EIZ?X{_TKL;g4T{>T%KZ4!CS>9>3-&93AO#lI5?Gn%>? zDsC`T&rfAqFe+AC3~bZ$U4nbHSghJy%5BdT_P}VKAA%cogK~^Am~i;Dl5f80Sf=clt_b##G434-Qu5g{*wg%ih9DM&#kePyW#_IHh4!#;BPVHKgvdogtO%Y}py!%y+^+qSThDQmByDc6`_3FGbLB>wo&Ac7i@- zNVWLb+v9;;V-=4W8cQ_8ydYZ#BEN{a-pp`#?l`9{iz9(x8x9Ph|Gsrtm{z+tThjsl*nhvqn)=y)7b2v!MHk@y9_-)vF< literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.class new file mode 100644 index 0000000000000000000000000000000000000000..c750812489969c70d567e749717437d754624f33 GIT binary patch literal 1461 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 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory$Builder.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..cd93953e7ac15101df77fa0aff4294e744d8e245 GIT binary patch literal 749 zcmcIi!A=4(5PcQhWdRXU|9}HrtRWtZOE79eG$DFe;=L|qQ&PH{ZcF0-_!S=f06)su z1)~xT2?tLzZ!&rF=FPmlzq|tI%^8(UCG`Gr%40)NxI)iC-A=>;DF#_Q@YmbEeYzY1&@HB=5dJ1fZ<83?s`XdZwhu*;7gvf8g_LRyR0^?uND=zDxz4p)Hg{p~F5rLU zqi=$Oe?b4J;+zR+X*kHs&g}f!Z@!tmzWMnZz&^GVDufS_*Li5P%`+Xk$n(TH$2&S3 z@94;cS>nIygV>IYJDlE*Mq{^qdTG;-xpn94n;_I$SVBMu_H1mkeL}U}`JzxKyj`@s zLX)t1WhO>D6JO|);T4A&VJY;?p75>R|K}WJ-o_W*IhK-VZK4mN$cC4k`)2DtQleYD300poRLupqL+ksixw-^S~~l0u?fq!Q40C97iHBI8uE*P zYE81x0z}@&vRE2e!K!?U2cmDGQUsy?3v~7a)$gJUsd5G)f!CrN9v7(GKvmtKH^S}Aw|tCCQzK87LJ$+3l@ZfMQJZLJZ3f` zx~2-pR&}Fd@nc~ad``6+b81D??YecMu9%{x8SCC^v(_+DQulR7V4xFo8kW;+&VsCJ?k+OjIy zmN2XNt*(i@zLlIt!w}pmWQ+M?o}uzO{Zg5qQ3VdA<=;dG~QE-iX zr6z>QcbwWjx60bSL6+gIx~>_!nkD4gHwJCe6vOIu=* zG22sitCr8~GW1p@u}rY_g8GCE1Dg99{cH!rO4q5TIy*|4Mm*5+NrPyI+GxF?7!sYe zCO^O4>wn8$D3@J5B`&i5+;~?gFJ4D-m6ZNNtGsZo4pKHPqSsAQiX&v_=F^$$LcUUf zvJIuWW9fWdNO>o`F16j4Gg1z8QSR`jy-{z{-4@$4O>VhO;-va$+l8v2z%bkG%g&(q z_lklghNW)LUyv5bwNq;tr>ndN4EN|cEWaHzAE&QV4<=|$H~jhf0Rm*F4;5J+(rla7 zjK;C-DOmOl%HAo$pAczH;~!k06g>yr!zl#um>?(dh-@+MI9VoX#gImZXeIPp@($9N z%zi{9H}x4e0(e97_;k*jOW*)nz&Qe&!U(2a;H-Dp2PPO~k#otCw^H^^f-6#fAgj7E_F literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e9846a136e8eee29ba447352ad0773939ddf5eb2 GIT binary patch literal 3252 zcmcguTXPge6#ja1nPfA$ut?+*NCE+JgF!?DHwHquMH5grM)BU6?cEHSo!Oe5Ny)SS z!QbGcR;ekVN`14+^1&ZuS$;h;WM?6+q%7I3>FGXwy3cpMKIcsT_Sd7I0L;V7BZm$H zohG`_EiiOnZb{3PUe&t0eqY(4K=+*EIpMrO$K=$SfgXW-6_6c051Xg5A%ZWnEb}NC}a$HxPx5D~)t0L{t4<1+x zo>Pw^f1o~S%7BH(Syc=9s6&bmt@KQ=ihSy@^K~^&L ztjNHaz?J_9whyB?u1Po{@O2hRDGVI1T5Ly#<68@rieqn(%zslXNvGj7H0{N<1lRns za+T%qP}5^B>L@&E;uKEvn91FuD;o`g{XD5=K*qwD`6(0Am|;XxRp3-qY?L%J$OZ6_?GelHC8??p2SamYk|5!zfS!)x@PZ?U+_`84sW1Aa~8Hr=ogp zdcHVc6sY{OrT7fyX4-|!F2_5cjrJ6*HZ-1+^~9%CZD%;OCeXRaaM2m>c=}*JR-6aVqQ#Hyj4e#dZL9r9zh&A{uVp^g;c}#(z8o^?#%P#c;2g?P5Vx zET-S=60&;>t`}4#2)U{gP@jD>W7BwIHSqizQ${|iR|0LzPzz{*d}F742~4+(A1=(4 zIu`pd@S`mi#Kl2>UfM0*B|EaUYR8%Gq{IkVd)$o~Mw=T-ejdnQ)9rDwe_-` zh);duoPdyg*7?}8`SBd#K3Lom0i`CSoZzRsJ=^O%EVU7!c|s-torj$CMMgj%|=1G^P+U!k`t=p z5KfSla-O#wW#V1^Avc#iPX%!~RxEe}t@jhMks;Z@eSwqBjA;ShN{0bnw2rk`eqBb2;J$yl-pFS1uS;&v$r-P7iCxJv0T-^tu10!rpC zQ_qd<_T>hxoS*c@!4hC_b?ekG2Z literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Afficheur.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Afficheur.class new file mode 100644 index 0000000000000000000000000000000000000000..22ac1b0ce0b35a2b06f0823f289f8ffff0aefb54 GIT binary patch literal 197 zcmYL@O$x#=5QX3P)7CD;jb~6d4s)fsD5!TwgTX?dr$kyjO5iV&0VnB%httppk3OI!2@;I=!%8mg#ysB=65zt=walo>gtt~4i6t6zXr8k}pDn1Rt!OnWsfVcEk9 z$EsEDM>@zu5vbe*VH|0BqvBW|1m^l6Amwossqj+f`Xo)VG?olJit~>HBa*SuV{4_! z@z|1FskMc#aXhhg-8P6q*;_f;Z4=1nWnxm?arY0)2QV!C?VN=|2@TR*hw{C$wp#y2y>AhCMTt6K*rL_9zl=u4w*k}c z(m72GtuLuME&70F_d8hk3%px2X!CE;`b?i4LV;i|tqZ8Yqv@&QHC3DdB*Qj#XlHnX z%@TP`Du>Q$-LGiueZ$i`keyj8t)fvt)@F?*gd}*2UBWQ5=i*xPaI1v#|AXt$wGO&} E0E@z_^8f$< literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..d7b456b605965b296b63919cceaa03314c0d4d95 GIT binary patch literal 3081 zcmd5;ZC4vb6n=)JEQD=I7lG0$OeX0FS@P;z#`lXdXQ3(R&fr!4B1^{ z-_T9N-qzP^yS(l*^ezZn_=^mw>HOvZ`p~Z+qhbIm!(7wVgSw%Mz}M?$)8+fZH2J*l zx90VxQTHA9nZ9fb%P?2N6N6Fxx@03#Sxa7o1&E;HOsVD0Lh zBjXqbxb5<7;rXs~)b@1cBrH|m74~-V)jju;bup18)9}1vezOm6lM5Z;aU;+`$)MmW z!)$^Xr##T+lRmhn;yP|HWa^GhCIrHzh}?ONh)|R#8MMa%H**w{AV*0g_e%qq!nA_C ziUMXBrV>;Xj=tP%iuw)@$d!FYxTo!K7q7|$pT#W&x{5j6W|&TvTs4FzJTDY&lARUO zlA(}nYveU~mn?jbVW{L-HNov%gXdaiU~x~HIE(jHe1H$BW~At{O~ptxSk7P^AIW;X z$FSJNh@{krLziX57s$VHbVry3p1}|nCBzcLNEZlVRj{0#;?nV9>AQ~g#N%$+ZUz2v zA4r#|dKd;P!scs%Rpai4Q8S66Rh+tEZW^wT=ZKj0cZA1qFUhtyK1T*^VXM*wHf>`lIxhrI08%UNs~# zx}`cw;)y3^ho|QletFY8O}$<^rAp6Fov#X+wO9W;*Kf%{P&Zw1 z9G}{u(R#%F9jD<9_TuXdw(yODZ&iGU?-{P2#7x-x&K}n*?X)8fBg#;E9IW{1@3?a! zrV!wPVK+?fO;j9bFK87z^C3n##kldT#pBoi|IZLInK$1FTQW?uDtund;^~`LSYc#~ z6fPr!Pf%0wC8}9eiNGbHsp0|3S(F*nvTbv>{ho4aS4uRkDA;3IN_a}Tcc0TQHp7L} z1O+z3WJkty3%-ID!+7#ldiujm!EG|Cho&kZO)JfXGz+ZINvD<3dam#s?04GqphRE! z8#s^q^i{(P_!O&j>Zhsf22mvQQxYcc<^O>4u%Mkk#2}yz9bh<(f_CK)@6d5PJRTs& z@EctY0W@Nz8IQgf>0KJ8;o{0MSQ?Wwihf4FGcpPh*w3W36UBEA&eADz*P5%SPh;RyKS6JR-qlLH8Ns12A4*^U86j{!#`z!Wx!qX$p0 nN$Uvhz9OC<@FVKcu7Pdr(7($>mnMnce(cg}(rUrMPZ;|bz?*aX literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.class new file mode 100644 index 0000000000000000000000000000000000000000..5cfdc973c2b96cca95b3329ecaa6b997ef2e8b4d GIT binary patch literal 588 zcmah`O;5r=5Pic}5i2MPo;?W~-GsywhQt^>HF&^qU+NZ?l$I7)_O*5K7lN(n*hyZ?%UG z%7pX4h}4%tr-|^xz^J7TL)8(-ZtYddx9;oEuOuA zp81l4%V?i1b&t_q5l}^qJ^m#eFk0~ypPY^T6*`%)xq4g+t+b9qM#9nd6z-N3jjVR_ E6KUgj82|tP literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Saisisseur.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/Saisisseur.class new file mode 100644 index 0000000000000000000000000000000000000000..a7772e680e1f98fd305caa09b8564d2fb75a8052 GIT binary patch literal 328 zcma)&!D_-l5QhJ?(b%Z9hdx9sr31MNy$FI}=^;HZz0KP*&}{lAK%_f%(bGnAqkpN7NG^4Np%Mlo IJv(?h1DMoS!~g&Q literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.class new file mode 100644 index 0000000000000000000000000000000000000000..7c22e429ef8fd5b10f8949af70c684cf83d0aea8 GIT binary patch literal 1721 zcma)6YflqF6g^W4+t%gL0tFQxfMQ#al?py+t&dt1Es|K$#E(lEaL9H`_Ce%7`9Y0> z(Zu-KA7#9=yOzF!rs?j??7ipQIp@y&`u*((fC65|5JI1Vu!?>RFpTW$hq`9y=AO2> zz0Ye7!$4k`!YMHHrP5Ue5r()IWEl5TiDBJ5aGi={alM|C^`DpZUtpLF>hB0i zS7p$Yic7f65H|Tc(q=4`ZrLn>33JZ_yQ*RuGgPyTTQ@0`)LU0@jUjc$#_Nq8Zg8z= zh`R2?NU%8-H;`h87{cNu)1__9w(46nblc9g79oRj3Nj3H|0XI6?n;^k6*uL!6iKtu zAZiV_6fCL8;x@z3siA%i%Asz!d~=s!rMsGLMS9e?a<&j{9YBVkdLlcDThvcvLXqTR z7%mHwzjEu_+}e`8#*ipCYPwO?Eg|Q@V%T{rY=))s8M3s|291}aBS1|;q|{Z-?g`2W zB=a1ON%4H^7#65A&LCx7P%8EL(*4`+_0auEf#7Up11Q z!TGIHt{@RBV$aka*CHL4^QG06IO)9~R_JowUr!SVL#)zptr}kw(u-u*NnVuQM8{*0 zt{&o`e?ndfbRQ`+?#CT^-lf?F!W03-Gbdn~?@->%pCI}L>PK1(;T}DQ&_~Zf3LGMc zVce%#(oe!Fax|lKVd0%S^&=EsR_xcGs_evy(Cm}tq5H1i9X>79S&eMkOO&-{mY6yz@xo8*aQ60^s+{u8sE z6->7v#F`a6#*=P@w1<%HM40P=5Rw-ZaZATG=`9_L&S#D>{}qc8pwDy47a`*T_zp#z e4n_9 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/Animalerie.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/Animalerie.class new file mode 100644 index 0000000000000000000000000000000000000000..eb03b227b329be8ed6b03d620b34281f20499521 GIT binary patch literal 2664 zcmbVO?Q+{h6g_JPD^b+iq)ljnq-{tccABV!@)d_b>ZVP=Z2r+;+LQZQpL}3P&;ImZc}v3PX0bST``ta4MP z%NR3o%ED=kGmQ6MSA2qWl=QtW#f2W>%9i8}SLi^7>Dhj)V*kJ>UcngyXDz&n*BDOr zz+;FkZ#F4s0+iCGT-?&JlNP3Mj`+*&TDzn6Bc-;+NZ$(}*>t{0be&?}!UAlDVW~vGl^-xn9Gbb2j8lu=#-f3DEL_364D(0VDcc<~P-Fm- zsKdKmLGbhcMx$SWk z26VsLXPM;zx|pi2yi#Tus*vLu@>S`HTVcB)f=%sG%3k#y?$&t_xi%RbQah3iy)Zzc z-V&lLl|#+ZZ9EQFgYWtwHI`vZ*WuZVI*IH@o>9zBEz8rh%_4)NzNl;ocIH z-kyJ7*wsj0ir_8o(8faB=4d)dO)qB~Rd{rh1jU1d!L(%Vjt917gr z?}+2Qj8nciHrYU<<|Sz>+;wYGiE;sVpL2xNNv&`6wtUaRr}(UZ3WK%bc_OH|dQ0pY z_<`Z#Q~Eti3Ih#>sTWVBl@;rT3zRfNzxVI~XdBXJHvKQrxs^egj&r6z3Fx{UeJNz= z4k(l!f|dS+arYrceuw#MH2WjE>JJGJ;t)>IcLiX@^YJl0p(k3#n4=jQYmuHb)^O=J zn17(~3*Bd+F?2S{k%}Kq;$v2;^!_R;bk#W5C`#wFG|t=sCNj9w&*wBT8jtWM;<*W) z=64Nigv4+i=Muy#(KFSe5fAV>!_S1D=5{8<&3sZDop=etdcvs?ae9RFzyW45=;t*_ zT2G~T6`t@a;0D$s9(3>$ny$3R>j7pDaEYN`v*~B>iZ$CPnA%qfzomp}_b30a;0Yg$l3TXz(Xc`Qq#<18b2P+yf94xQzH+QzS4W1j(pz&Pl z?Pkl^Nn0 za#9^gm|@`hN7cazyn*OHr{O;48PYY^cf&fv)L^R^xmj!}NU5~^oPvx3O~DwCiW*8N zb14Lq6NaTi@jt|%v44Qc4f?75pL64lQ_kL%Zv5Lq?HN*9>E1mpFIzv`b*M(bB$1*_toOhZ+C;tC}C z0dlE4bB=qT#r5F0E4YlOoI2J-O(m;x`@}>lNKzJMu)lT;? zYF^((!826i7IxgC`i(l|9!Td{ID;gDhe;90B6yS%fhvN-+=7?n*aa+ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.class new file mode 100644 index 0000000000000000000000000000000000000000..ea00165fec176a2988c848c08541356fee0f794a GIT binary patch literal 250 zcmaivI|{-;5Qb-cMPs3bhfoj)QYzSpR)RvnezQ)(hRtqRCpnyj2k=nhTBWp@pJ5*V zeDnT1UjVR&X#_n1>)d0bBpz-^Uk~d_50gT039@CWEh?d0zI-V-Hk%s_6C77bv@5% z>fxuRJ{o^;JV!TNC(46CR3RZt>rwaZ0YlZ8kJ{qgoQgc>3g+OZx-$mtFkURG1=eb1UqTB(E?2ChGBr91Efas7&ldst)0wq4&1I}FR|QVH{o z*2_Us=;)Ok@_b!av4Kr)L9AiIP_NE!0=4@~6Zh$!7z&2#J4ex|?*#9xzDJq%e{^W` zy39~A#@R>>_nK+_jDr8Ae%S! z=dgqAgtnK^*1r?0bYD2fgEI(m@KB5c`2vs5pm1GRHY~<+B{DCI3jNO{dUQM|Oa_fV D5xnOP literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.class new file mode 100644 index 0000000000000000000000000000000000000000..e2f970396eb318471ea47b2dccf9869775f25d01 GIT binary patch literal 224 zcmajaJqp4=6a?UT{v>K;;~f;i2WbT@1gnUJV85;}vSE`An@tX9;Q>69n6x%F!xRG_ z^Zq~ zj0p2wwTi7OAAG*$q5~nWC8S0g!g`thH~Q&zbtTL$uJKxq#tLEat8IEHA`ph%2Y@^1>ar)qmytHE^^$|U;Z4)n(###&C^8gAVkWpJ#<%>kKa#GtvHbt$-Kekh_wLDwm`+XW z{p#Y|*LnRE^X-rC=^H#SmLQ_q*hg+YNcEx0(o~_Lk+vxmDkH30ng>F zedq`DqpHp}X`d>w$kKRbWS=v~GyeJO`wswb(JCT?tb?43JPHguXNJd8a2;DNy)&b( zwCAYoa2cMOvc*oPeunf-o)0083f5g!0roGip=;mA$6R!NnPotybBFb5i10 zmavLP_i38N<5=7S|D>klLzVV2ze4 za`1xT%>zM(@mSlxy)A?yiWG_6OCxc5tKA%tv1K`2TLS847YXkCmYn^0Ftw8F*l*C^5E+@RLFL+Kmp8Qj7pfBBF9mCj}Hl57JxvK5-* mDppX(24yxVvpmJZCSFlQsMtb*n6}B!BU>%cQLsZn2F>40^Z3L7 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.class new file mode 100644 index 0000000000000000000000000000000000000000..b5df87abf0f8a47f66ba5acbffaff2883429068b GIT binary patch literal 215 zcmaiuy$ZrG7)5XVY1PTc&_O@wsNfY%7>FP85)Ml za}_JoXD9{jaTS+P^-!y03w4I4rzy`v!BuW}s83TlS6a(MZf1u(N=~GfTtzd@U&SgC znkeEVV(dG^ zh%kv}Nor&yW5bWcOoYnFw+W>j%8cPfa8bynNw>!&^oUBt&>W~(9_P_Srtif>lf@q- zq0nQIDtlfUUGq^#I@}onYB-Sa;)3 zWmVTkNuGxCjj~F&7M=0THUz`&JDEnx7xQtzzecRmhJRIAPw7OvQI>E+(Lfd3G@7_ZmU{~ruHy!sh@c3=ik%JQP=K4bwG6{)wRh#t7kHm&hkX!j70e*qc{1*8A~ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.class new file mode 100644 index 0000000000000000000000000000000000000000..13aaa23f210290ac74e15ae840378435201dcce7 GIT binary patch literal 1542 zcma)6TTc@~6#j-n7s?`7LA;?=0o!s}!Mg>FHX$}Cmjr?j`Z8>XGB7*a?9MjvpZFI{ ze9%NO;lUT*{87fUZKKsT(udhO=kz<@xlVulJpBe>4Qna%Az`84#sHEG3kQJ{x!jSF zaa?r}h`LltEIX#Q?09}fDB(!2rkv+mdR#FiSEQC^jbSxgKH_!mD6Xr{jtQi$7RqOn zm8FOZxxFC_V#q?u#xU&Ov)GcM;1R>1-rrV{Cqf2RN)gvN8>1Mb^s2&a`X0l0HrJV7 zj7;0OfN=(kka02$d4l$scnTLWY2lKM%W<^X-rN}aHTOiC25{BJHB2!~di+=veeH7d zN}5BGLc_J8dY*LaYe%O`U8=KigW>VnDY?E^^8+J1p^dX4s{uD63K-V9MLwIZG0{?P zkE$%v!Z3`Mr52l!w=aTSzOTrVF8eN5dpwY_-ZJ)^LrL{IJ@me@fz8<$7!o=jaJqB6 zl!0nYG}{AbBW;G^cwv4oQzDxyQ2}Jz4n#=(;YRwJA+_U2fh*Q!T+MJZlf`%_3}Y{R z--IUMwGCko{Yp5R#8L{&xM$&hJnaVz(|_hCb=^M}tq0RwfOYN~KX}XVu6+P4V3YJE z*A*qg>9X%1N3}v{>1~$39CzQ=L>Kt$HvHE9k#J3+eW6+uMXuD2G@>wwM+`ZZsryP~ zDqM#d#WTV8_f=|6rV?dXhS!BlSFQCZ?UL3aC@LO?BDC<7VWy)6-72%N!f^fnPAc>o#u-X!e}>HT!u`MLS8VEL&pus)IAhgb^l;FeMV literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.class new file mode 100644 index 0000000000000000000000000000000000000000..20c7c294a9c313fec9eef823e83a9cc3f22ee304 GIT binary patch literal 1685 zcma)6TW=Fb6#mAJy|%MSz<|?08kQ2kc1X6Q0ZL4`nWnMiTtuQEwNK;C5D!`Ju6D*b;Y8sf#XUtd?hLENKy?~J zNEw)ASpIVMj^7FVP>GK4l)V;{=Sp-#hSHGOjmjlIlv|$mLFk1bO<~*bhK^X3I=8&$wV*)>`;qUf zNQFFD7pm>=MH5*p7f{1p11q|xG{v(Y<4f<*KM=_%_u9P59p#5d48QajIWg>ku5oYA z713!p$KF=^+RfAzT`QkjAZ;>1}*ZZ{4~(^t+FTBo*lN2#>Lf Gseb@W%8>B@ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..3b25fe5f5b9067b8aeb6f8da5989c8734f238fcc GIT binary patch literal 2511 zcmb7GTUQ%Z6#fn*Ims|kngSBEU~7>i5T>OUYl0}yMq7baf>G*qn4G}iWF}4~w7$vT z@X;51?OF;;Spq!~1j!ofLuTfjv-h|6`SvY;z4+r#01Mbr(1Tu%kcu!O z41>G+o~~KCy{$di+7*V!5Sce^(_3KZO{R)5L=odqRP;e*m@m6p-Ox3&?rDZqcEz4) zSz=D}s&iUZxHYrp>9!%XylIJbp_hdFu)WI=Ez`cOR|G?RrER(3xu(6Hi(-IbK)20` zZVA^Ev)&U=A^U^U*Yga+$+J4CBF6|iXm*cLbwdSbP3m4?^gm05Phw{E0I>!waH*t$$CcvYnwtr)pqr|+v>(o7Y;ko4hG@L3bxQ%x? zvMO@28V63&*v}ftrRCHF$9t4h?RweRah=Edmdv?%yszQ|EHd=#rBb0@t-6A;vcxdj zNq;o^xUS*dG|mv`!R>FyIlR6WzNIqseqq!`?L&~fk~!&uvs^}6ku7126Z zkjFh)1dALWGu#TGva?;t>z-;9p=Ama!?_jH7Hjp&mT))ZeP!El4BaZ~t|`~e&5*Za zQbI2T(cfvVYj?^qgk+&H7_Sn?b_xV$X4e{_AW(O;oeEW>-|nd01UcU&X&GYrNz-Bo zO!-q~#Guq#t&1TYWR?^=%8IgaTiBAIh}&rG)L#60Cb?#tV_?$Mbw=8}$t4w9kZO0vsXhvxZhW_@R~t#gL4HmJq-Q5- zP;ZaYfMvK(zqp*4GYui!@*T06$@<`G`YhK@11nK{B(Hk=6mj*ASN*+~4YLrngJ$>vU$&mj?&K%;M1B_-v{)b8^Bz1^|MCjQ8&aWMypG@VYg^!*+rQ540 z;1Tt5SCVj2gfve2 zGlY;rjoy1m<1wc3BQgzA%EW1wcrFkUC(Q^p@F~S{nEo#n@frCufgAW7n?w;!Rl-wA zMkUX_AP;*9D~7M|bt88BtvK!D8}eR8Wgj}WC=dpH=MZ}#{|4OVC~=HG$MrnN{7bSH h=7@64am+MM=fUV8`W!t=981d_cVYxqCWszv{{x{5nePAq literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..1e63e2ec538d521c02ddb7408eeeb764fda9b3b6 GIT binary patch literal 3224 zcmb7G+fx%)82_D+uwhvcqfkRFDi!1wVo}s4)>ct87D0t#(cYGDfQ8L&+}!~7YH!;6 z&0hb24xRC#<4g-GGu6)Y$+u1)I@3R(GxfE;_)zJ0c0&@TOr)74yXTzmcD~>5`_8#_ z@A^-Ri`a*+W%y7c!LJ~IQiiGtbxMuusxcPr8=l}vhoN+@W@yenhLWb{!7>C3Seh{w52BKxQZ=-cs&h-@?aquNlm99a>sp5DrvK_R4@y`^)?8znS>RYk z2vss_@PLF33c{#mXe$za${gW3kM7U8r*OpvRL8U!YMPoo=NU)SqlxT%yc`?xkc2t~ zo3ME)jAbGW(zt5(@)^o3CG@n=s8{eXwleq)cY6Jj?E)C$5*isI_m5XgrS)vkKLS!dpr76)oD5C+p6zs+xBIFo%dd(EW@ZXEU0`drhM^qw5Tfg-r6qmc^c(3ITXR!G0WIkezdB-aoB5 z$#KDk0w!jK6U_+;2g!Dx*9jwOrqZgT4ePv1S8cm%oC=K}vMke*(Ix8e@ajSC(`>G0 zWOO5;;3%FXW>I2#G@fB-Aqw3eDj^$}aSXi@`V<@&$!%PnnjkCHt?+(QK|cl<$^|UL z$MsB#Q;vz-2^oVpCE;lWLpZ$zg-eEn;qWm|brf_=4>wWHi52)F;TeY3`v>LHt}kQR zGS1*R1<#9+WG^IB)9oNsN>C)ijgd%1&?~86M0C7BQa5cbVU%HA9;$(H%bZpTCm9^$ z3N%bGRH!2({h4&y;+_tWgh2^c|W>^0cFwh6ID5Ht*(S#&EP0 z&#lWyAuZb5gapdY?jrjxY_D$dEbFZPE^1#4YkD+;_hwSV+!_$O5q;K7s`{X6X=0q6 z^gH7kVYaUrXA1qT*v{irnLKGxT`?qA(<$<;HD1i|ioJ=FOzup#1Q?>l^b7lvS2Gl; z-z2I~t*u&-#Ki`^)98PA^foC}-Nr_sR(ZXGh~f1-T4R*5>fCezUuaGCT#5sbp?wwc z7NnIJpUoaaM={lvb4-lychuzMF*Thfiri0mOLBof@pwfVv_0bKE|DK zbHrX#iVtOcgpVbBB6{ej4E6a!u)IQudL1>VOAuWsEHcfQGADV|GkHWcMs#j(?J>>C zOgdiBg0n|K!OSwn0czdxGX<+FwEV0>m#XXibRZEBO2RO><@RlEOZc3jAs_!T`^y89 z@FhcCaZ#d&w+n2c3yu#AXXzIbmn=GSO6Z+#JoInVsGHV(^psoX!CG2>gmi^QJ~;GW zNwUCt_)(2Ay6a?URO3lw3ez+qJ=ZFcPTcsiHakg%(VEl}s+h-`yg_k21YMR&QR^C0 zJh7}Xh8djmO!#WawM?>i77!Y0`2o^A*7vr~p*rRd`>)|ahHr3Lylr8)iH2Ap(iRR} z!!{r05Q$W6oUB#oPVx=X!q;P4qbRCZam&paiA~x)O>ggduKe~Xf zp?Ms-5iY%n?pQDq4$k4o9C~v0+?f+s@f6L>qDIJ_iIqjdWpjAeoAtt&T|5y9y&%-) zFg%M5F~9es!~$Wz2yrazzcGu7-UXzFBJ(hBT%o-yxP@Qou=owX;}3cQf8sAp(ux4) zG{FGWk<=!-m2JUJ)FVcBnl3aVffk&nJK9CG;SwU0r*?dcD89pXET98FV+VdAja%p> z4|QaBH(Bn)ZS2C|*yG}Il4x_0?7oPX=lXq}|Z29mGtsg|iKL|-^m$3034oGOAFRPcf-9_jwf;|%WA~_65 x2ui4t(Bz78Fj@%Sg^x5Q%gEEaWXp&5@IF0d^6~+Vy6L3;EIYo0FYpz@{{n80aF+l8 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..4b1a222a2165eb4ccd5d8f49deb2c3640c05cc39 GIT binary patch literal 267 zcmaKny$ZrW5QOLAPt?l7htS3a3!8voV8{`S;^UIhPNBCgD`$9NCA=K` Z5su$*Z3Tr!m}IpMxwrK0#BFNlCh$Wa>R>1>fr5!kTnv4bH*zW??;2Ta=x4PL z4Ybe?=tq^#?iw6QSo>v0Gt!(hnj`)B`|~$|CXPKUq2QqCV;L(9TLUo>T#N9Ew|fH_ zSca8T6)M|gC{$}*2QI^L-|#pPT*a0Lx^Lt}X)WvAj_Q0ET}myv8jdt?tFaWZ3y(lX zY9ftYg^zUy8$LF%#jrmgsHJ4gP&{v6yl1Gk7At6Ya8OFFbcdl?ZOty#u||bgjYV-j z)Vdz-;l6_hK6dbs;b?vbZ$mW{S{fx895IMuD-A<^k>=B}W%Z3(*TrK(2qLX|Mmc!O z@Fs_SB+Xcjtq23jJ2viJNOAdbmUHl&;q`*`|J9NJ??_jM&6Wz~c|7b%^GWnHWlF6m z5V|XjO5$meBssTP_ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.class b/2A/Java/tp/tp2-zoo/out/production/tp2-zoo/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..d3675d190802dd469b563972367038ac85088d1b GIT binary patch literal 271 zcmaKny$ZrW5QOLaNz}^5chJTK8;gKolS)t!v_8*`oLqj`TmrtDg%99Ei4g_C!e-bV zhTU)OkLwM<0{svzg?S=W8BMnGWLzR#TjzL2zL-(LQrgn%%rNc6dft4E5FLf#S=XAJ z&Q7#GoY{DVfQ?vT1v6g#Ii2Q5c1+96rrNPsj{c<+ZG0}5Pdt8a(PXDE*yfcOj;(86 bj(#DhFTOxQq1{vlRKwgw@R|@d+CuLM+_F-a literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/Main.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/Main.java new file mode 100644 index 0000000..0d27a1a --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/Main.java @@ -0,0 +1,17 @@ +package fr.uca.iut.clfreville2.tp2; + +import fr.uca.iut.clfreville2.tp2.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp2.io.*; +import fr.uca.iut.clfreville2.tp2.persistance.FileReaderPersistance; +import fr.uca.iut.clfreville2.tp2.persistance.FileWriterPersistance; + +public final class Main { + + private Main() {} + + public static void main(String[] args) { + Afficheur afficheur = new AfficheurConsole(); + Saisisseur saisisseur = new SaisisseurConsole(); + new CommandLineInterface(afficheur, saisisseur, CommandLineInterface.commandes(), AnimalFromUserInputFactory.create(), new FileReaderPersistance(), new FileWriterPersistance()).executer(); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/CommandLineInterface.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/CommandLineInterface.java new file mode 100644 index 0000000..57120d9 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/CommandLineInterface.java @@ -0,0 +1,89 @@ +package fr.uca.iut.clfreville2.tp2.cli; + +import fr.uca.iut.clfreville2.tp2.cli.cmd.AjouterCommande; +import fr.uca.iut.clfreville2.tp2.cli.cmd.CommandRegistry; +import fr.uca.iut.clfreville2.tp2.cli.cmd.ListerCommande; +import fr.uca.iut.clfreville2.tp2.cli.cmd.PasserCommande; +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.io.Afficheur; +import fr.uca.iut.clfreville2.tp2.io.Saisisseur; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; +import fr.uca.iut.clfreville2.tp2.persistance.ReadPersistance; +import fr.uca.iut.clfreville2.tp2.persistance.WritePersistance; + +/** + * Une interface en ligne de commande. + */ +public final class CommandLineInterface { + + private final Afficheur afficheur; + private final Saisisseur saisisseur; + private final CommandRegistry commandes; + private final Animalerie animalerie; + private final AnimalFactory animalFactory; + private final ReadPersistance readPersistance; + private final WritePersistance writePersistance; + private boolean quitter; + + public CommandLineInterface(Afficheur afficheur, Saisisseur saisisseur, CommandRegistry commandes, AnimalFactory animalFactory, ReadPersistance readPersistance, WritePersistance writePersistance) { + this.afficheur = afficheur; + this.saisisseur = saisisseur; + this.commandes = commandes; + this.animalerie = new Animalerie(); + this.animalFactory = animalFactory; + this.readPersistance = readPersistance; + this.writePersistance = writePersistance; + } + + /** + * Réalise la boucle principale de l'application. + */ + public void executer() { + readPersistance.lire(animalerie, animalFactory); + while (!quitter) { + commandes.rechercher(saisisseur.lireMot()) + .ifPresentOrElse( + cmd -> cmd.run(this), + () -> afficheur.afficherErreur("Action invalide") + ); + } + writePersistance.ecrire(animalerie, animalFactory); + } + + public Animalerie getAnimalerie() { + return animalerie; + } + + public Afficheur getAfficheur() { + return afficheur; + } + + public Saisisseur getSaisisseur() { + return saisisseur; + } + + public AnimalFactory getAnimalFactory() { + return animalFactory; + } + + /** + * Prépare l'arrêt de l'application. + */ + public void stopper() { + quitter = true; + } + + /** + * Créé le registre des commandes. + * + * @return Un registre complété avec des actions courantes. + */ + public static CommandRegistry commandes() { + CommandRegistry.Builder builder = CommandRegistry.builder(); + builder.enregistrer("quitter", CommandLineInterface::stopper); + builder.enregistrer(ListerCommande.NOM, new ListerCommande()); + builder.enregistrer(AjouterCommande.NOM, new AjouterCommande()); + builder.enregistrer(PasserCommande.NOM, new PasserCommande()); + return builder.construire(); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.java new file mode 100644 index 0000000..bb355f1 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/AjouterCommande.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import fr.uca.iut.clfreville2.tp2.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; + +public class AjouterCommande implements Commande { + + public static final String NOM = "ajouter"; + + @Override + public void run(CommandLineInterface cli) { + cli.getAfficheur().afficher("Quel genre d'animal ?"); + String genre = cli.getSaisisseur().lireMot(); + cli.getAfficheur().afficher("Quel est son nom ?"); + Animal animal = cli.getAnimalFactory().creer(genre, cli.getSaisisseur().lireMot(), cli.getAfficheur(), cli.getSaisisseur()); + cli.getAnimalerie().ajouter(animal); + cli.getAfficheur().afficher("Animal rajouté !"); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.java new file mode 100644 index 0000000..b3493b6 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandRegistry.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import java.util.Optional; + +public interface CommandRegistry { + + Optional rechercher(String nom); + + static Builder builder() { + return new CommandeRegistryImpl.ThisBuilder(); + } + + interface Builder { + + void enregistrer(String nom, Commande commande); + + CommandRegistry construire(); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.java new file mode 100644 index 0000000..e60f884 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/Commande.java @@ -0,0 +1,17 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import fr.uca.iut.clfreville2.tp2.cli.CommandLineInterface; + +/** + * Une action réalisable depuis l'interface en ligne de commande. + */ +@FunctionalInterface +public interface Commande { + + /** + * Exécute l'action dans le contexte de la ligne de commande. + * + * @param cli Contexte d'exécution. + */ + void run(CommandLineInterface cli); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.java new file mode 100644 index 0000000..7e57a84 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/CommandeRegistryImpl.java @@ -0,0 +1,34 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +class CommandeRegistryImpl implements CommandRegistry { + + private final Map commandes; + + private CommandeRegistryImpl(Map commandes) { + this.commandes = commandes; + } + + @Override + public Optional rechercher(String nom) { + return Optional.ofNullable(commandes.get(nom)); + } + + static class ThisBuilder implements Builder { + + private final Map commandes = new HashMap<>(); + + @Override + public void enregistrer(String nom, Commande commande) { + commandes.put(nom, commande); + } + + @Override + public CommandRegistry construire() { + return new CommandeRegistryImpl(commandes); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.java new file mode 100644 index 0000000..a219c5d --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/ListerCommande.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import fr.uca.iut.clfreville2.tp2.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; + +public class ListerCommande implements Commande { + + public static final String NOM = "lister"; + + @Override + public void run(CommandLineInterface cli) { + if (cli.getAnimalerie().estVide()) { + cli.getAfficheur().afficher("Aucun animal"); + } + for (Animal animal : cli.getAnimalerie()) { + cli.getAfficheur().afficher(animal.getPresentation()); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/PasserCommande.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/PasserCommande.java new file mode 100644 index 0000000..4b74c26 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/cli/cmd/PasserCommande.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.cli.cmd; + +import fr.uca.iut.clfreville2.tp2.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp2.modele.Climat; + +import java.util.Arrays; +import java.util.stream.Collectors; + +public class PasserCommande implements Commande { + + public static final String NOM = "passer"; + + @Override + public void run(CommandLineInterface cli) { + cli.getAfficheur().afficher("Quelle saison climatique (" + Arrays.stream(Climat.values()).map(Climat::name).collect(Collectors.joining("/")) + ") ?"); + Climat climat = cli.getSaisisseur().lireClimat(); + cli.getAnimalerie().passer(climat); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory.java new file mode 100644 index 0000000..a560f7e --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactory.java @@ -0,0 +1,84 @@ +package fr.uca.iut.clfreville2.tp2.factory; + +import fr.uca.iut.clfreville2.tp2.io.Afficheur; +import fr.uca.iut.clfreville2.tp2.io.Saisisseur; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; + +/** + * Construit un animal d'après son genre. + * + * @implNote Implémentation principale {@link AnimalFactoryImpl}. + */ +public interface AnimalFactory { + + /** + * Construit un animal d'après son genre et son nom. + *

+ * La factory peut éventuellement utiliser un afficheur et un saisisseur, voir les détails d'implémentations si nécessaire. + * + * @throws IllegalArgumentException Si le genre est inconnu. + */ + Animal creer(String genre, String nom, Afficheur afficheur, Saisisseur saisisseur); + + /** + * Associe à un animal son genre, utilisable pour créer une nouvelle instance du même type. + * + * @param animal L'animal pour lequel rechercher le genre. + * @return Le type de l'animal. + * @throws IllegalArgumentException Si le genre est inconnu. + */ + String trouverGenre(Animal animal); + + /** + * Créé un concepteur vide pour cette factory. + * + * @return Un concepteur vide. + */ + static AnimalFactory.Builder builder() { + return new AnimalFactoryImpl.ThisBuilder(); + } + + /** + * Un concepteur de {@link AnimalFactory}. + *

+ * Une factory est d'abord construite pour un certain nombre d'animaux et est ensuite figée. + */ + interface Builder { + + /** + * Enregistre une façon d'obtenir un animal d'un certain type d'après un genre. + * + * @param genre Le genre (s'il existe déjà, alors la précédente valeur est remplacée). + * @param animalSupplier Le moyen d'obtenir cet animal. + * @param animalType Le type qui sera instancié de l'animal. + * @param Le type de l'animal. + */ + void enregistrer(String genre, AnimalSupplier animalSupplier, Class animalType); + + /** + * Fige le concepteur et créé la factory. + * + * @return Une nouvelle factory. + */ + AnimalFactory construire(); + } + + /** + * Un moyen d'obtenir un animal. + * + * @param Le type final (donc celui qui sera instancié) de l'animal. + */ + @FunctionalInterface + interface AnimalSupplier { + + /** + * Créé l'animal. + * + * @param nom Le nom à attribuer à cet animal. + * @param afficheur L'afficheur à potentiellement utiliser. + * @param saisisseur Le saisisseur à potentiellement utiliser. + * @return Un nouvel animal. + */ + T create(String nom, Afficheur afficheur, Saisisseur saisisseur); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.java new file mode 100644 index 0000000..7fabe14 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/factory/AnimalFactoryImpl.java @@ -0,0 +1,52 @@ +package fr.uca.iut.clfreville2.tp2.factory; + +import fr.uca.iut.clfreville2.tp2.io.Afficheur; +import fr.uca.iut.clfreville2.tp2.io.Saisisseur; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; + +import java.util.HashMap; +import java.util.Map; + +class AnimalFactoryImpl implements AnimalFactory { + + private final Map> createur; + private final Map, String> decomposeur; + + private AnimalFactoryImpl(Map> createur, Map, String> decomposeur) { + this.createur = new HashMap<>(createur); + this.decomposeur = new HashMap<>(decomposeur); + } + + @Override + public Animal creer(String genre, String nom, Afficheur afficheur, Saisisseur saisisseur) { + return createur.getOrDefault(genre, (a, b, c) -> { + throw new IllegalArgumentException("Genre d'animal inconnu"); + }).create(nom, afficheur, saisisseur); + } + + @Override + public String trouverGenre(Animal animal) { + String name = decomposeur.get(animal.getClass()); + if (name == null) { + throw new IllegalArgumentException("Genre d'animal inconnu"); + } + return name; + } + + static class ThisBuilder implements AnimalFactory.Builder { + + private final Map> createur = new HashMap<>(); + private final Map, String> decomposeur = new HashMap<>(); + + @Override + public void enregistrer(String genre, AnimalSupplier animalSupplier, Class animalType) { + createur.put(genre, animalSupplier); + decomposeur.put(animalType, genre); + } + + @Override + public AnimalFactory construire() { + return new AnimalFactoryImpl(createur, decomposeur); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Afficheur.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Afficheur.java new file mode 100644 index 0000000..e7452d1 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Afficheur.java @@ -0,0 +1,11 @@ +package fr.uca.iut.clfreville2.tp2.io; + +/** + * Quelque chose qui permet de présenter des informations à l'utilisateur. + */ +public interface Afficheur { + + void afficher(String message); + + void afficherErreur(String message); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AfficheurConsole.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AfficheurConsole.java new file mode 100644 index 0000000..13582dd --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AfficheurConsole.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.io; + +import java.io.PrintStream; + +public class AfficheurConsole implements Afficheur { + + private final PrintStream fluxStandard = System.out; + private final PrintStream fluxErreur = System.err; + + @Override + public void afficher(String message) { + fluxStandard.println(message); + } + + @Override + public void afficherErreur(String message) { + fluxErreur.println(message); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.java new file mode 100644 index 0000000..aefcee9 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/AnimalFromUserInputFactory.java @@ -0,0 +1,29 @@ +package fr.uca.iut.clfreville2.tp2.io; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; +import fr.uca.iut.clfreville2.tp2.modele.impl.Oiseau; +import fr.uca.iut.clfreville2.tp2.modele.impl.Ours; + +/** + * Fournit une pré-selection d'animaux pour créer une {@link AnimalFactory}. + */ +public final class AnimalFromUserInputFactory { + + private AnimalFromUserInputFactory() {} + + public static AnimalFactory create() { + AnimalFactory.Builder builder = AnimalFactory.builder(); + builder.enregistrer("ours", (nom, afficheur, saisisseur) -> { + afficheur.afficher("Combien de poils ?"); + return new Ours(nom, saisisseur.lireInt()); + }, Ours.class); + builder.enregistrer("oiseau", (nom, afficheur, saisisseur) -> { + afficheur.afficher("Quel lieu actuel ?"); + Lieu lieu = saisisseur.lireLieu(); + afficheur.afficher("Combien de plumes ?"); + return new Oiseau(nom, lieu, saisisseur.lireInt()); + }, Oiseau.class); + return builder.construire(); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.java new file mode 100644 index 0000000..274baa1 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/NoopAfficheur.java @@ -0,0 +1,13 @@ +package fr.uca.iut.clfreville2.tp2.io; + +public class NoopAfficheur implements Afficheur { + @Override + public void afficher(String message) { + + } + + @Override + public void afficherErreur(String message) { + + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Saisisseur.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Saisisseur.java new file mode 100644 index 0000000..39366f5 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/Saisisseur.java @@ -0,0 +1,18 @@ +package fr.uca.iut.clfreville2.tp2.io; + +import fr.uca.iut.clfreville2.tp2.modele.Climat; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; + +/** + * Quelque chose qui permet de récupérer des informations. + */ +public interface Saisisseur { + + String lireMot(); + + int lireInt(); + + Climat lireClimat(); + + Lieu lireLieu(); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.java new file mode 100644 index 0000000..1bed5d1 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/io/SaisisseurConsole.java @@ -0,0 +1,44 @@ +package fr.uca.iut.clfreville2.tp2.io; + +import fr.uca.iut.clfreville2.tp2.modele.Climat; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; + +import java.io.Reader; +import java.util.Scanner; + +public class SaisisseurConsole implements Saisisseur { + + private final Scanner scanner; + + public SaisisseurConsole(Reader reader) { + scanner = new Scanner(reader); + } + + public SaisisseurConsole() { + this.scanner = new Scanner(System.in); + } + + @Override + public String lireMot() { + return scanner.next(); + } + + @Override + public int lireInt() { + return scanner.nextInt(); + } + + @Override + public Climat lireClimat() { + return lireEnum(Climat.class); + } + + @Override + public Lieu lireLieu() { + return lireEnum(Lieu.class); + } + + private > E lireEnum(Class enumClass) { + return Enum.valueOf(enumClass, lireMot()); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Animalerie.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Animalerie.java new file mode 100644 index 0000000..878a506 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Animalerie.java @@ -0,0 +1,36 @@ +package fr.uca.iut.clfreville2.tp2.modele; + +import fr.uca.iut.clfreville2.tp2.modele.comportement.SubitClimat; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +public class Animalerie implements SubitClimat, Iterable { + + private final List animaux = new ArrayList<>(); + + public List getAnimaux() { + return Collections.unmodifiableList(animaux); + } + + public void ajouter(Animal animal) { + animaux.add(animal); + } + + public boolean estVide() { + return animaux.isEmpty(); + } + + @Override + public void passer(Climat climat) { + animaux.forEach(a -> a.passer(climat)); + } + + @Override + public Iterator iterator() { + return getAnimaux().iterator(); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Climat.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Climat.java new file mode 100644 index 0000000..b0266f3 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Climat.java @@ -0,0 +1,9 @@ +package fr.uca.iut.clfreville2.tp2.modele; + +public enum Climat { + + ETE, + AUTOMNE, + HIVER, + PRINTEMPS +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.java new file mode 100644 index 0000000..c8fba2f --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/EtreVivant.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.tp2.modele; + +import fr.uca.iut.clfreville2.tp2.modele.comportement.SubitClimat; + +public interface EtreVivant extends SubitClimat { + + String getPresentation(); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Lieu.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Lieu.java new file mode 100644 index 0000000..481b83d --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/Lieu.java @@ -0,0 +1,7 @@ +package fr.uca.iut.clfreville2.tp2.modele; + +public enum Lieu { + + NORD, + SUD +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.java new file mode 100644 index 0000000..f640efe --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/CapaciteMotrices.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.tp2.modele.comportement; + +import fr.uca.iut.clfreville2.tp2.modele.Lieu; + +public interface CapaciteMotrices { + + void setLieu(Lieu lieu); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Hibernateur.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Hibernateur.java new file mode 100644 index 0000000..dfef44b --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Hibernateur.java @@ -0,0 +1,22 @@ +package fr.uca.iut.clfreville2.tp2.modele.comportement; + +import fr.uca.iut.clfreville2.tp2.modele.Climat; + +/** + * Ce qui hiberne pour s'adapter au changement de climat. + */ +public interface Hibernateur extends SubitClimat { + + @Override + default void passer(Climat climat) { + if (climat == Climat.HIVER) { + hiberner(); + } else { + reveiller(); + } + } + + void hiberner(); + + void reveiller(); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Migrateur.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Migrateur.java new file mode 100644 index 0000000..dc1694b --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/Migrateur.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.tp2.modele.comportement; + +import fr.uca.iut.clfreville2.tp2.modele.Climat; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; + +/** + * Ce qui migre pour s'adapter au changement de climat. + */ +public interface Migrateur extends CapaciteMotrices, SubitClimat { + + @Override + default void passer(Climat climat) { + if (climat == Climat.AUTOMNE || climat == Climat.HIVER) { + setLieu(Lieu.SUD); + } else { + setLieu(Lieu.NORD); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.java new file mode 100644 index 0000000..9705d33 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/comportement/SubitClimat.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.tp2.modele.comportement; + +import fr.uca.iut.clfreville2.tp2.modele.Climat; + +public interface SubitClimat { + + void passer(Climat climat); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Animal.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Animal.java new file mode 100644 index 0000000..b6d9789 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Animal.java @@ -0,0 +1,34 @@ +package fr.uca.iut.clfreville2.tp2.modele.impl; + +import fr.uca.iut.clfreville2.tp2.modele.EtreVivant; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; +import fr.uca.iut.clfreville2.tp2.modele.comportement.CapaciteMotrices; + +/** + * Une base d'animal. + *

+ * La classe est scellée pour prévenir de tout héritage supplémentaire. + */ +public sealed abstract class Animal implements EtreVivant, CapaciteMotrices permits Oiseau, Ours { + + private final String nom; + private Lieu lieu; + + public Animal(String nom, Lieu lieu) { + this.nom = nom; + this.lieu = lieu; + } + + public String getNom() { + return nom; + } + + public Lieu getLieu() { + return lieu; + } + + @Override + public void setLieu(Lieu lieu) { + this.lieu = lieu; + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.java new file mode 100644 index 0000000..fe6171c --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Oiseau.java @@ -0,0 +1,23 @@ +package fr.uca.iut.clfreville2.tp2.modele.impl; + +import fr.uca.iut.clfreville2.tp2.modele.Lieu; +import fr.uca.iut.clfreville2.tp2.modele.comportement.Migrateur; + +public final class Oiseau extends Animal implements Migrateur { + + private final int nbPlumes; + + public Oiseau(String nom, Lieu lieu, int nbPlumes) { + super(nom, lieu); + this.nbPlumes = nbPlumes; + } + + public int getNbPlumes() { + return nbPlumes; + } + + @Override + public String getPresentation() { + return getNom() + " vole dans la région du " + getLieu().name() + " avec " + nbPlumes + " plumes"; + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.java new file mode 100644 index 0000000..79bfa73 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/modele/impl/Ours.java @@ -0,0 +1,34 @@ +package fr.uca.iut.clfreville2.tp2.modele.impl; + +import fr.uca.iut.clfreville2.tp2.modele.Lieu; +import fr.uca.iut.clfreville2.tp2.modele.comportement.Hibernateur; + +public final class Ours extends Animal implements Hibernateur { + + private final int nbPoils; + private boolean hiberne; + + public Ours(String nom, int nbPoils) { + super(nom, Lieu.NORD); + this.nbPoils = nbPoils; + } + + @Override + public String getPresentation() { + return getNom() + (hiberne ? " hiberne " : " pêche ") + "et a " + nbPoils + " poils."; + } + + public int getNbPoils() { + return nbPoils; + } + + @Override + public void hiberner() { + this.hiberne = true; + } + + @Override + public void reveiller() { + this.hiberne = false; + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.java new file mode 100644 index 0000000..4a82385 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileReaderPersistance.java @@ -0,0 +1,46 @@ +package fr.uca.iut.clfreville2.tp2.persistance; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.io.Afficheur; +import fr.uca.iut.clfreville2.tp2.io.NoopAfficheur; +import fr.uca.iut.clfreville2.tp2.io.Saisisseur; +import fr.uca.iut.clfreville2.tp2.io.SaisisseurConsole; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; + +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; + +public class FileReaderPersistance implements ReadPersistance { + + private final String filename; + + public FileReaderPersistance(String filename) { + this.filename = filename; + } + + public FileReaderPersistance() { + this("animalerie.txt"); + } + + @Override + public void lire(Animalerie animalerie, AnimalFactory factory) { + try (Reader reader = new FileReader(filename)) { + // Plutôt que d'implémenter une nouvelle factory pour créer les animaux, + // je réutilise la factory existante en masquant tous les messages affichés. + Afficheur afficheur = new NoopAfficheur(); + Saisisseur saisisseur = new SaisisseurConsole(reader); + String genre; + while (!(genre = saisisseur.lireMot()).equals("--end--")) { + String nom = saisisseur.lireMot(); + Animal animal = factory.creer(genre, nom, afficheur, saisisseur); + animalerie.ajouter(animal); + } + } catch (FileNotFoundException ignored) { + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.java new file mode 100644 index 0000000..ec4d64e --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/FileWriterPersistance.java @@ -0,0 +1,57 @@ +package fr.uca.iut.clfreville2.tp2.persistance; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.modele.impl.Animal; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; +import fr.uca.iut.clfreville2.tp2.modele.impl.Oiseau; +import fr.uca.iut.clfreville2.tp2.modele.impl.Ours; + +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; + +/** + * Une persistance écrivant dans un fichier. + */ +public class FileWriterPersistance implements WritePersistance { + + private final String filename; + + public FileWriterPersistance(String filename) { + this.filename = filename; + } + + public FileWriterPersistance() { + this("animalerie.txt"); + } + + @Override + public void ecrire(Animalerie animalerie, AnimalFactory factory) { + try (Writer writer = new FileWriter(filename)) { + for (Animal animal : animalerie) { + // Écrit l'information du type instancié de l'animal + writer.write(factory.trouverGenre(animal)); + writer.write(' '); + + // Écrit les informations généralistes de l'animal + writer.write(animal.getNom()); + writer.write(' '); + + // Pour écrire les informations spécifiques à un animal, il va falloir instanceof pour récupérer le type instancié + // Plutôt qu'un enchaînement de conditions, j'utilise ici la feature preview Java 17 du pattern matching pour les switch + switch (animal) { + case Oiseau oiseau -> { + writer.write(oiseau.getLieu().name()); + writer.write(' '); + writer.write(Integer.toString(oiseau.getNbPlumes())); + } + case Ours ours -> writer.write(Integer.toString(ours.getNbPoils())); + } + writer.write(' '); + } + writer.write("--end--"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.java new file mode 100644 index 0000000..2c2e3ea --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/ReadPersistance.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.tp2.persistance; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; + +/** + * Quelque chose qui permet de lire des données persistées. + */ +public interface ReadPersistance { + + void lire(Animalerie animalerie, AnimalFactory factory); +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/StubReadPersistance.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/StubReadPersistance.java new file mode 100644 index 0000000..a7327f4 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/StubReadPersistance.java @@ -0,0 +1,14 @@ +package fr.uca.iut.clfreville2.tp2.persistance; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; +import fr.uca.iut.clfreville2.tp2.modele.Lieu; +import fr.uca.iut.clfreville2.tp2.modele.impl.Oiseau; + +public class StubReadPersistance implements ReadPersistance { + @Override + public void lire(Animalerie animalerie, AnimalFactory factory) { + animalerie.ajouter(new Oiseau("pivert", Lieu.NORD, 5)); + animalerie.ajouter(new Oiseau("colibri", Lieu.NORD, 4)); + } +} diff --git a/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.java b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.java new file mode 100644 index 0000000..6af97b0 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/src/fr/uca/iut/clfreville2/tp2/persistance/WritePersistance.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.tp2.persistance; + +import fr.uca.iut.clfreville2.tp2.factory.AnimalFactory; +import fr.uca.iut.clfreville2.tp2.modele.Animalerie; + +/** + * Quelque chose qui permet d'écrire une animalerie pour la persister. + */ +public interface WritePersistance { + + void ecrire(Animalerie animalerie, AnimalFactory factory); +} diff --git a/2A/Java/tp/tp2-zoo/tp2-zoo.iml b/2A/Java/tp/tp2-zoo/tp2-zoo.iml new file mode 100644 index 0000000..8cb7438 --- /dev/null +++ b/2A/Java/tp/tp2-zoo/tp2-zoo.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp3-vehicules/.idea/.gitignore b/2A/Java/tp/tp3-vehicules/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/2A/Java/tp/tp3-vehicules/.idea/misc.xml b/2A/Java/tp/tp3-vehicules/.idea/misc.xml new file mode 100644 index 0000000..a346fd7 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp3-vehicules/.idea/modules.xml b/2A/Java/tp/tp3-vehicules/.idea/modules.xml new file mode 100644 index 0000000..38d3733 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp3-vehicules/.idea/uiDesigner.xml b/2A/Java/tp/tp3-vehicules/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp3-vehicules/garage.bin b/2A/Java/tp/tp3-vehicules/garage.bin new file mode 100644 index 0000000000000000000000000000000000000000..294a6e2b1d6abf51a26493195495c616e4047f94 GIT binary patch literal 354 zcmZ4UmVvdnh(RN*NUtxu%PxxyepJ&>TD zV^L9JB}k^C@sjM!}r+ zk`oIOlQT;orf~wz(Io7tu>8!D(xOxpgE$Kki;IC?Eh+}Piv?(sE@6`(F3L+SDM>w_ RXX;Qk`TG_o28N1)3IG;8aUcKy literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/garage.txt b/2A/Java/tp/tp3-vehicules/garage.txt new file mode 100644 index 0000000..725d0e7 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/garage.txt @@ -0,0 +1,3 @@ +camion 9 +voiture 4 +camionnette diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/Main.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..2697c38c10ff8ca635e5d358e98a550edc2e1a2b GIT binary patch literal 7198 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 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory$Builder.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory$Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..dac569fc215db31f968cf5a3dae8e1d6d3fb8c7f GIT binary patch literal 612 zcmbVK%Sr=55Ukdi%}b5ZPw`cI4^WX>gQR3`w z@PVgzYO1HFsH*PwkJmQtW+#MMA$0Dv7Uo9rJQq13SZ%RR vAZ+@305<$Sw@~*uC=ePRH_`gSZPZpT9c-5qJJ>C27d>B#Nq-U8uQxvdU7NAD literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..4c300499abe0b0d59a1baf56e11a609ccba8ea09 GIT binary patch literal 927 zcmbtT+iuf95IvKaI0=Ea;Zp85wJ3eTsPKTO6#!JCnbid03W@KI_xNBnKvcR~WmmT^oX+gG*=#8nMZY?+fa^wY?Bc!Si|P zL$n2phw4N{R%PSp!|+h2p46$+%4@;X-p()Uz&n$TH`ZpLX~2e{H8A5$`NA=1`J$jC zp;ySR*jz4H>Qyv_H#Qn*PwVQRSUi)dO5QJ7hSOmPVn)o{^GY>J5(S%+eb&3MV=}#4 z91XQg)X)<77$>i1a#vmU|07$>{>$2X7c>8zOwb-o3YY3FQ&!adZ7rUamm;{lt8@Qe zmxbpc?g?J~>o5eJ?JU!7)2ckzBzq`$IWJkctSo9~U3pj4w7IV#T6_vXJ)jdh+~h0N zYPd>$0gFHNCHi%7jh5@QKjK+_%`cEoXQ-c27Tn;!!4u?|vfM;aNz1rJyoTGj!!w}Q TUEHVCB_?=4#wL*vj~lHYNtyvH literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl$ThisBuilder.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl$ThisBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..22b645c9fc6a99b590b1aeea5d75921526b35547 GIT binary patch literal 1751 zcmbtU{ZG?S6g_X7ly#lJ)cFO9fVvH&2q+(07KMnAOf=bo;m1r|zRBo@T zv=0exq{b~{H#j*k+=g~wQY2TibKTZ6><4~sdB!zz?su7^7g;c zBY6xN!*Y!l_k34$)M9r-{DVn!W8{xd#Dp82k0UNmf>!in&%nRx|yyaBVm2Hv~P%KF}fEdQWI8uc0h@O-v zA5)m7-Aqs9G3^+h;3=IE=${Bf)XSE>LY|%bj?pAOUWT3`$mtMzGD?o2=@<$qhUKy- zVU|EexqL_{OIf0v$SPruVv)dSls^wOCa_J2LY{Jg{JtP@jys=eA4wA?fXH@aDSfg; nMAV7U7eX6^kN zf(Xnnm6SED$cq8ZT8d%iP{1t>lLl^MisAYI9)m$32f=gE;*m>ePnHreB}Qx5l6q7Z zX_#S{>w^yw$zdArNak}4lV_Y&1WEKg19vb_sve1xnvCw|*~(Y}GFcklXIShfVwWUs zb9X&xM;+mXTR+*NDXet8}PgiDBik zS)+{AoVLfqC=d)=N;W8C6-B+&kFsD$rAobStlt}84 zwFALJivQk4`BbD&jw{8Kkrg5J>Q_*j7KZ7IKqw&$8l6w7DH8MUn+16Rdzrqx%R7xG zFD3+wD-1tY>Q5D~DWlb4)1}2d6IQSJQDBR0M^?nt(9LpRhRl%L7rk&#$l~c~SZ7$f zN_iCPR9hR7<2FS=7vqNShrKZ1-8~V$@SDAS7SDBTVOztO26nJJaAqCv*gq0xHI|5W z@boq$avgQ_kD8ElQ{rHUdrepLidEk~in{6*HE_t{`(@c%vFmvv*mQZXC#be^il!RArDE$B=>X5c=rzVHI*2DKy9>g88p<>lX?{X(Nrd`$mu zPz&0d!F7z&=su06lGQM=LL=IjqJJ_l_uzc4eD3)n^&a8V)NhNhrQezIuh5oXlLwsQ z<|zKc^eJW;ex^B1%?SHdkO}gFDjO097sQ*zU4@9|aaS;pEKjzb|mOY_%yt}?#~R30$3cRIBpoDk^j z@N0`C0=0Xk(Bxadlt8%I`}ux%Q+VW=3KS3^Q1;gdQ1Z8Q2!YSTEQ5;ABdB^@hNHYv YgX28bq2c41?;%i!(;)J=4$UC?2Jpb)9RL6T literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory$Context.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory$Context.class new file mode 100644 index 0000000000000000000000000000000000000000..810a0e2e3f8a992045c2b8e0d755a058ee82c2b5 GIT binary patch literal 410 zcmaiw!Ab)$5QhJ0b+=tx?ZHRzpeP3FO+k=Cu~76-@E*f#n-VsXWQ)F<2Oq$PlFn99 z5Ui(RhWV0zzW0yUHvrcd6TBdSKrH5gucKtZKI8G zL!bRi|7;6h%zPaTkF8_E;jiH5O;$qZj$^v@Q4Z)6hFh}zAwW)?R27Gj(~>e0@-HJ9 lfzTGaKug^0B17XSM@J@YbelN}>}_ff`%()bA)ArQmV0eK(mhJ6mRFi~bIe z{t0h_fU@f5=Up+7}}Bk z^r=i#>@)XP9??w4g`xd({vbUyThUDCdxbW~)5YEU>e9 zfDkQ#)f085q)~P%UrkOZ_6%;bG$kkSyfdmmO|xS%^fT*zck~Nt?47pLzQ9uKsDygg z`BPg3t~2=}Npw7;!u9`RI958>d0tv}t4uE@EYKY5sa3vkB=CMW>h%_JAN;41qKNw# zPR^G=V9=>7@{(oRnlBMUHHJJmft8WAbXcSla*>)CmbAuM;bPj?C3Ew_Hg1>06}WOp zxqnHeS03W7K(As$F3V+@Sx;|#hJ2tW8{qdUuJKu}u(XC%)?ddO^Ea5^WJ&oge};Jd5%mvDb6fcz q@C&xC;}*X)+{T?B(i+yWf%{Bvuuk9s9x>uN$K4E?EDP~CXnqF-+fH}@ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$1.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4de982d4f82a964d74eb7233f55f7b6f934507bd GIT binary patch literal 1454 zcmcIk+iuf95IvhXaTDAo4N%Jc5(AE#Vp=4G2&#l4Dk_EY5R~_gyGgck?8=u2eu5W% z1SBdX9{2!03Naf(0w{GT5|+HPo}F`cc6?^Pe*63dzz#MG$RMjjGmt}`;ZZMi5|=wN zi5=JLg<>QYONG5 z88}aWhBj0VO9l!kGOQ?;h|5Su(U`_wK+~SaHi|H?tYgJM31x=zAs=za<9^?H**z3) z%#eQ~eHrgCWUX39M}^^WN|GlW*lY%VEM61cTPrQO6X2>|jWpbEwOJ7O%js(!2CW$! z2!>Ki`eHvBc18G#cRlh{T7k>G4iBaJo;bC5AR{V4+8!x~Ft-|1QN>~2C*}Mj3vm?M zvhVXa2`N#dFXE{(7&ffGmk~*jz_W@l)EA;>(UeEA9VDSEcBQJ=`W%_xQ;MSUKJ#5K zh@{_tA>u)Bpu=Q%czPizB^bDay9_xu6oQ)Ooz27S^)xIw*dfMFGxa#`I$09m>U=z7Z1Tf$k2 zI7hQ4SxtHD`Z1Wjc?{kDgfkz=mBD!$^F#w8T%&P~dtxmJA}-PTWtwMDrr8x- zrBM+(WEC=Je*}9!4w%tZ$8;(~3YgF_T*LJ_VEs?9H3zIwhAM}fxJ6b&6}MrHJyq1m QR%lJ-uAWucsOJmc0rQNF)&Kwi literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$ThisBuilder.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl$ThisBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..a59ef4bc449448111f597e09d84f31d3595e4f72 GIT binary patch literal 2210 zcmbtV?M@Rx6g@*LOG^<%sZ>QlQE3aVq9V|WNEIOg{6SO0ACqO7mLbb-vmZnsz^Cz# zCK^-{AHat)-kEMnq0&&uCbM^D?wot>$K3hz_t$R#b9fU+2O=7x30y!YL*I_EXXut; zSM;}=JKXdcI`hI7{v1POEM3yj#c)X}1-`KKCBxfZHL7uFh{Vv1god63E~1xVq3r5` zY3L&Gb<--ld{0;wpVa;8W4&yczTOMF|HfyEbV^X1*DHCo&j-a;U(E$%XOxx6Ag z-{lOwD~D#uWKNp9lt90<6}6pRuNzk|pdp#SRSYup98o9w)quR29;?ALxR`5RNjEQP zxW+JbHlO0Sfguey6S#$8hJiz71&3l{`ogh2@-VP>oh?xo#-_!|MTX&!t%|jDIwV$~ z$C1KqnY%j-Bgd7G1x#k|F2ij5K8)7$5nC4(+wcRKkk3c)^9?au_g!IE!oVuB<-k^M z>WiU}UpWJhf@AyqgP+T`I!rO-7O&So0!esN-NO<8JD#xY`zxk zZgRIMlgZG(;+Te2GF+A1a53srtuwr8<;^Lt3fYdkyv$v0oATlm8teQN>1ezJDjvCX ziQMr&Ruy?wvFgr*SadbLpjx$rG&a-_+onVlv#!1Ho>T8=h+EALL-J^B$YdCw_pNZx zRY1j}DvIQBHu-SlSH3tq+bS(hMb>7#&(Hq<)MeJEZa7BRa!aKb$3H6*Ra4a+5VMh(8A`U;q}>? zSJ*TNDU>imPe%tBMrrJquNBGn=soPfeVWsYQlF0@LNYy#G^R;oRn39xnSHR#0kn;M z#J(ebDE56-Kp7e@k}@!bD5eQ=23eXV2#Ahj924|scmSQuO6X6d9i@LN^9}Lr_)lDp z;2p_*6WN+9fg?BseokO>7{m(&oT(iSfe8i=@kkjp3x& c+9_fUTqAqkB+ny8xp;{}XAH0Czt|c32V%2t1^@s6 literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b37957446df48876e4852b23dfb4371a42eb3b76 GIT binary patch literal 2884 zcmc&$TW=dh6#m9`yzwPT-Isn)w@y&I8N zegH2#@(U0zAW@ZogphdSN1>kC-8gF}-71xUSee;5GjqQ0oHOUl{Qb{we*jp;7iq*0 zSCGhJ0!fBTkF-NgH8iuU?(99{y2Frc2vaz#4Dn)VH-$;06r{7rAj`1au~k>sRN*?R zZggyZC=7$&R-OJGwWH~dWgn@#{6Ofg!8iQzX0LBBOxnCF29C`cX0|*`*Aa%gt@Y~? zVmgZ%sXt*_y+H=E$SIi1;xeuE);>4*5R!1Z+*voY!GK||Sn`oP>pWpSgO_ks z!L=+FkY|`0VL}$uZib~|XrJ$udRSE;Qt--%|5}bM%DLg6*g~LX45sukt^qr3(@sS zoKN>HhWsf+$2E0FSf;uWd`zN50g%iUR0t@-?Gd3~yp={7H{|iU$?$D)>&4X6qxK0) zebDI${eZjn^A@%=F%W}+Tv^)9UwRtQ(>Z|l)&_iS>0mE#)ENNU&=UHnd%Jtx& z4)c5zm7+nXZJqL0Rs>=4rrX=&c3aysNRr#Kbj{e+Y$3;iFyR~sN{N*yi=W{xS%iqw z{HR(w>b`0=J4QC_lOUx+^#A7whM4?Y;gi8hQZ4Rro8f+B5|5v;aHR}fM`igixD*(w zQQ;d`Mro?sT$1=MT=z~w5|OtrS|cvTE_e3qQ)SRjiW5UAO5X@ahV)=qtLWBy&c;w( zWB9(&uGOM8jQe%N(GYoAOp-$Ta!D+2*ng3>54ztVP5( zBGDJyR43M4VeHF;lif5;ZhM7|Q}xJ%CKa?8Y8MANDZUI!P=-;UM@$TKl~9|LZzcM^ zOE0b%?$MauHpB5U;v}8GJJhbw3YYpg^)uxsVCBkVDCO#7O#MuvINqf;hXl2A)Lupk zS1^rv)JRhBx1o*(jYvTNE59UQ4DXS2o_c@o9#Qb;mPzK5TP4~1xKFL5vO{vYI$!<; zQbfN9rI`{%2tkFEfIv&z`sr(xx$!efV z$`w-X>0QbdJ-ti6qx@yLdgBSI$518WY%Osuaf&9Ntss+2sCbBXeO*JuD$RW0F{)w% zA9|~+_z0Wiq!Rs0K8e8Sk7@jgXU7({sZY}CCOuj{rSAorD^oB3niSK|$mO3?RNKka EQ%rzFaR2}S literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Afficheur.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Afficheur.class new file mode 100644 index 0000000000000000000000000000000000000000..8e36c77ce221838d1911f578100c23293ed6e4be GIT binary patch literal 197 zcmYL@O$x#=5QX3P)7CD;jb~6d26QP1E_5ZhD7cRyttp|EA?e{x4k)hk`&a7>7s@&1sy0 IWO0wt8^($1`7 zoBbqClSmOG$qCsR7BZCa-sm_RWk$*QfZ0tKEe2PWF*ep%%lpUG=yRH>IUhA0%I~o6 zuE5jYQsmNLf9&8oZdllGv575#^(AfutRwao#bmdH7iA%{I-U*sV+*$g9$&Hm0=50* z6BVE})UkS-&nL=!kP|M6H%vkqjiu4NFN3x0K&JxFhL_}*1s({j%0Tw?=X52CcVg z_mL-yzAgU@!rwlHI7nuevg#xmRn;Wqz+>ye)d`o95t<+l3( literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.class new file mode 100644 index 0000000000000000000000000000000000000000..b700f7d28f7b0adbbe4d9273ce98c505c03bf52a GIT binary patch literal 588 zcmah`O;5r=5Pic}5vwQ)o;?W~-9+OFLt>1c8a!aQFLet`N=ufO|K-WVgFnC@Wt=Uj zK@&Lao1NMB=4(Gb-`)Xqa8yAKc?Sg-MU)78V>y>1l+jQ;4#vt)2&Eex>7+x*H(PxN zWx`otMCwbS(?s}TVANcPp}G{w^h)ShbmMq>8wA=Psnj^A5Kh($e#nHvUHq&FRZmB% zn@$GGJjp@Gk(w9#GVDvEt-lNwl98Sf&b{^dR~l*)%5u@2A=I1R@5H^t=xEq(^$E^I z&1Q0#75+yc?0#psH-?8KRC;l0eD$ESURMfUSUry6@TLh{y!Jd>-ZtYldx9;oEuOxD zUigxO%V?i1b%)Vi5U`6Xd;Ck-XSCvLJ~RIi^ E7jFG`8~^|S literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Saisisseur.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/Saisisseur.class new file mode 100644 index 0000000000000000000000000000000000000000..d25accd7962e5deef04fd365d071ff240aba94ae GIT binary patch literal 204 zcmYk0F%E(-7=>R^L1ECrL%?Da9ZeifNHh+dpq3v}Qi~~t!#Q{W4`nP9j_>7r`QGRI zdILBii4ZWPmF2w@T=kAiU0E8G*0ksDdElz$g;1U9I_hnNIm4zAgWy`2n&0jXNym_s z^bn>bdu@H%rrBj;3TKt6kAF~ZJTyzQoFOjS-by+vO$_Tvv>W#!gXjEDAn@J=LX7?h LOW!c8#vbtxWl%Gx literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.class new file mode 100644 index 0000000000000000000000000000000000000000..901020a22943e9b4d281392164ce68a66b1baef3 GIT binary patch literal 1213 zcma)6+iuf96r4>$+&WHkzZ58!03}JG?gh$2P+uw`MM{fAP$V85XIr*%?8=u4{)q=b zKqQd(06q$F*0!2bOx1_1a_pHob7qhH>-YDc0Cw?AMG9#J84cHvWhfpSr-p7B_L2T_ ze9TRsA^Tj|!rx^`w>u*R3k;v@xa}4Y|pVcgW^Tq z7%EYV^A>v2Lq&S1GBjcj;UKTLF)_v#Ckql&mzV}a?L3A|3i~KDxs2-yZfLlPmA~>B zzW01SWk?B|$cZzmG@&Yc+|h6sEryKE-%*6sb|=Dze&SvdcVEK;tkPr>*S85uA@>!u z8QNEkhq~-J6N;xW5H>#urep5Dmh&={2aai2Bf}N4jvr?Hx58uC99*?QoPUp2!3*z_ z@}J+aOqaWq98F=-!qA0LY-jPrucepyYQ+gKv=X!f%zOhO$xfot*?LQYcu zXC2n19HpG61!j0izp~sb+UhL*r%j}@L)AVqgaAt28CdrRls9WLEPjRdi5{lVrE>{s zI&%b+tC`0dRrQF3M|eyX(Xoydl9bZ=WzyvY=>ka?LwCv28`zAc8<$Df5~M36T_x$- ze_U^1E0&hA$Ut_&z<`DBXEbNHHP1nQ3xFo=<#MQ|5rc4X1`OM1#Tt>O)c6AJ8*YCj eT$H8k0!m5_dXfJGtI7O(A1?4)iTtM_YUdBKq365+ literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Camion.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Camion.class new file mode 100644 index 0000000000000000000000000000000000000000..f0018d261719b17abb2e0674fe7689c8be9e884e GIT binary patch literal 1618 zcmb7ETTc@~6#j-@wv>gIauZQ5D%uudMZ6b5K#fi6B|@60Ps4Vg3)|hgJ4^Jx_y=xhQn#rwA z?Xl2pr^b++H!MRgFvRkOs)7{5sa8L%s$Z;|VIW^=A+1Wsur^DDY9}(tD(F>_Lmxwa!_hpQYlbH^-P~}* zjzKjqYO*<}HSC%&g|@;QRFWa3hxG&lE9XexfQms3kwe-cJi|i1a#X-l;dgpI>adFA z7$MX;ck3%efnoZ8Py=cwRg7Ycx+|W0+;kZh{{y0p*TeNKq03U?se%cH;=i?3McvRn zlSs$&T6#Ja0stI|A%G=BUe5!C;NiwCEGs9)(Ax|hV-iKIl8!O_%gb}@tE=B zsNZ{Ion5wV=}Lz;LpE+EiA!l*#uWuuRb0b$hOrj5<5|*Z2raA;r7(1^@1ZcfYaeGC zczauDVcL~$)g7ZLZKpkD#pJHrZiq0R{SMMz z{g-KuI+a2$!_dQ^mMu#-0kUuv&}E-&Nk2r2f?Euuhlf(nL*1CAo81A1aauY5cGG1_ z&_01vWIs(O8!_4e$BG}pMqZ)&6O<>p&X4H&QXKh!o_FMn;SBu`QWg-WUjiv42`!Ex z+D!(&00U=nj!uLY)S^!b?YqH#(6K`SDF+I)5>K^Zj+iOTfSM`4OA2h)!MZ;q5cit|zWJQed5q>59!IPtgq!7yfDWeU@nAp~E| z9uX}#lf>eC^c+Sb5y8Zv1!ON!3y44f=D((kw0ymD)cy=^poDp{q{(sakw4@r2QxZLOaZ;`56t!vW!P z*{fi*vcW6kmOXE*b9}A*+l^|v7j~=`y0Kl`viF=JC(QP*RJ^h#I3^?uF(Hgg+wwzb zYVMzPJqXjXGul2nvF`t-DD#a&5G=E5TEN z1eAir1MpCYS=%88E@))QUhmF)^Uuug{`&p>Cx8YXTQHC@k+pFKQw+r(KjMzZ{jT$J zwd!G8CSe381hGAU%HVe4oO3Ez}M)yg>xvGDBGCD9K+mT zc`G2G8_K}fevwa9*^zwL6WWnsxiZeGj!#&mdBMga&NJ9u5w-_HN|k@C3%H0&CNA5! zf~ySE11U+soD7BHVW1f1N4%e>^L0&FvayWoR8hXSNBN{8hpJw$zBO@^p%nAug&07I znYhg`8_&zYX$d8{CqL+vsfsPx^?4X68aKug-E9898~xntjXFbii(14m)0Dn=5gqIb z^(u){Y6dR%+MFU&)O0c%?n~-H?G#axo>PP;BNfsGoLJ=c2%=x)i7}QE9ifEp3Tm8F zIYknGOI2+%`1*=3P~H*^iIMO z9Rh=%8@L79b^7?yw?bEhfhw{zrrUwuwfNG=&Fb z$*+J_8rg|G?qH4nm_BP{p;_znr&+n$XIS4*{77R1nxUhCbPW7+sehu%p>;ZfDd&F5 zv1(s2e}W4PTuCEt6o60K;Ph+4g^6|J1$nt|8jnJrLWi!pCLu}yh8(+y}X OMq0ZEct|V*kNyB+9#x$H literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Vehicule.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Vehicule.class new file mode 100644 index 0000000000000000000000000000000000000000..8f6de821277f3d2304742b2da900b1833e2d0d14 GIT binary patch literal 159 zcmXv|y9xq95X+vARY9=uD=Zw)-qP0MzX?0mfI`*Gz&k#j}rF;izFn>guFk` z7l0k67KOp8j+DG3NiBJ;BX^?88*1-cx`q=g(~&RYld{FoV9~hFk-FQN4pqaxwHO;L pf2jm2If_$xxJubzR)!Qk@1-~Mf6ux<&QAt|j8PtgtTuCj$rl&_Ds2D& literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Voiture.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/modele/Voiture.class new file mode 100644 index 0000000000000000000000000000000000000000..f1835fee35e28919418700aba70cb7f5c76c59ab GIT binary patch literal 1635 zcmb7E+iuf95Ix&moCddP11*I@X}KmT)U@TELb;1b;UbD60Z$ueo0vM@uwGa2FMI+I zAb~0s3EufAVC=X}xK-`L+PkweXU-YV`1_B|uK;e~b`}Fj7)Y8(A$mXma3eT%(b10dGRQIrJ9UUmaFu0wNfmQOPb?UAXE>w37SuXy~ zFoZp1;xHx&w#EI{9b&;SwJ zkNsUueJ|I9)pdNpy@o6NlT|6#f=;=QbKLxWmN@X)+m5&^d|NpkEmeQW9hZiy-w$T@*Rf0z<8b?+`ztXrOD42{z!KToTTSCMTOBxq>-Ut zOP=-zF^E&qU4((tI725wi*hj(Xg>t@la2!hNI6iXl?vGaql8%^HX)CBdWY9WX%h#4 z540VK(xxMGB1&U+UE(yO^kbMM%b(#B!24Z=PvLAFzC_7F1)0+9CXW0se!T0mtulji zm?MNx%@z?WI+MiGCk*dIBNf9WVMS!mQwfMb1Qvd#1zMrrMJj&|*HFe1S+Zogj%D1! Fp-PKlQ@{R0{h>|In;A(X8&elPW_j;0^0`Da~)_$hk~SvPN)JS z6({SJw5;K|*^*gt^fkjY^;225`b@T}J2j)`YF0_lo;57ZS)VjaeWp1o5U*YTV*$N@q8IIDCkj%&I|BRamOa-nv-xnGdp&`yf~QrS z#3^pq-qrIKD{&gBQE zA9o|U(54?v#j{GTVO!a8+p2l1x|8d~NAOVv!zywZscYP_IZ9ixoe8b9d{JN3nCsS( zz@aesM_3KC8CCI|ESf~gv}?M8=LL5A%=r78U3Tp2+M-FS$1twq1xyHR*UIIhSFJjF zt)`co+PALowLgbZ1ygmC%&bUqD0ore$$ECl1TEO^r0rSdi5rqZQlMa(+h~R}ZfdpK zLnv881r--$Y@Ibr*H+g3xD|Yy!9^Wh@Z3h>Br$^n3T6d*>yRK1T0uq3$rOK?h0sj# zD8%1q5%VfOfy)fwy2DJYC;8sZ@`p81#Ap&%Bso{vIvV~X;k83!!7TZCeqzxe6{VKW z#_FfYvifxu6;SS&T@lDd9R`@(<)G$$dBUME-&(ts0z=@;7C9U3hU3ecv!r`YP>Bjw z1WrHZ(xT?AHCD2LjrtGri4>^DN*tvn5H4C4|G3)j-s(-X|CrGb7o{>IKpqEt>#9f_1YXx z&s~|Fp#Aodk{O;{l11BdN_y}i@7*-5Psm2XE^*ej-J0uY)$_W$Y?o_0+wf)*Z{ckP z@2L18-lf`p&+%h6tTlT@&rWNri)D=~w1%{utI@ZAMner31rDY(t8D7Eqtmv%;#G5z zjfU+eGSaeecD<@c;g3HVxZHYe^g|t59@k8>$o`z`!sVR_{6wB0eyZYU__=>NspyW* zqaO1l`#4RZUg<3HE@?r{TbAzl#iKJDe=TtAA(}U1Ou=sj`nHBL8v}ZAn4h~Cf0uEM z*Is$L5Bb4{BSKtoz7w(~N{`egn8jh#pxACFjL@Mz&47`hjsl;C~Fx-}EyN&eF z{9PP>`F%VCyoV3RAfX@IK#J(#NhL5Lp=VQx`^Rr%asxfX@!&y~s8mAE#qV!GEo`8@ zaQrUL-{Kbcld=NOIy1P0S9srrGFEtBW$-TVz-#z2^8WpGyu@utDo05n&_i^J7J6}n z*ONFvTYa?FLmPdx(!;ffxw;Qu;r(?S#2Yw-ZxJo2zeu7^VlQg+)5fu*@UTYO_tV>T z+(4YxZLH(d^!WzgK7-Ht0^V$hbrYZCT1oj$d>&sQ)vxh+9_qg_soS+)%GH_ zElO=KNo|L2;}t2^CmXWy=|R~(RhNwq56BiT-15mej5LEE!qZF!Dc5r(eGF5W=6P_8 z@m=OID<8^~VLk)>L=BMEL5h&(Z$H;kkQ4t)0AgANK!p4bdGuvivN)fj6fy&1nfvnU zXQwP&@Sh*KrJy8Z_$KqNX=98TBhlZc?%!z?`Z12kpY7cX+y0EjyD0ww+hw(jh}k3^ if0tu1d=KB}T{`#y$9{w#;}`fPN0J=*6@G)?A@yH(qY1+R literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.class new file mode 100644 index 0000000000000000000000000000000000000000..075edc1ee62ec505f297f1080fc23f865cd13ba1 GIT binary patch literal 388 zcmaJ-O-lnY5Pex|SL+9YCr@7WVnFe^6lr$;Xr08Gs;1BReiPSbPlE+$)?m+qAf%Z*vFO<9u)&cDlw=UPR>+=4WEiDB!vPLc?YJZ02dSNL A`Tzg` literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.class new file mode 100644 index 0000000000000000000000000000000000000000..dae1a65e4b4f38240a026c716f3f43a8307cab46 GIT binary patch literal 767 zcma)4OHTqZ5dKEMMZ^~>zAkzb4>nN`MvNYe7!!gA4EItCmMpuZyG!(Ec{1_f5Aa7B zrwcJrBJt3f&g1)LI-QTtw|4*+*ePHJ84uYaa+oD7_vBCtUj|)q*Y0T*6K2m%VB!lx zX1~(%kSCmWtVom;CW(deJ5~>k@9QHG501q^+sH(*43rj)FdQ^xGSrE^kyduKhXUc` zpXeV*LiQ?r(1fMB33Marx3#^OZJ#}*dZ?t|lGZqT?99fGCL)~G|5t^rKOUuWKW_T4`~yZaN{t!8C@SwFusrlBYTi_E%v- z;rdDGL2SYx@~}x*P555YzdRRUi!8UgZh$a9&Oj6BU^omPum~i^(yYy9N;k3o;w1508)5y AB>(^b literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.class new file mode 100644 index 0000000000000000000000000000000000000000..2b8826a4fafcce83868fbfe01778acee1f19ca34 GIT binary patch literal 1110 zcma)5+invv5It_vnr=grrj$}{EtkS31uSuSKtX+pD5@0EhoVS%bc~a@+U!P-w}Q{& zg-9Ur0eloGFBLBXYyQ%NXA2P(m&J6 zF|52Yv2lkCrLfWExWo_+tVopfXi6ts8&$J#zKbPNGpe$A+UO&t&Wwp3?l4Y970!*j7lTj@=_qujLNI%L3d)+o_p4NvViam-gEuX@@$sS*9E}7+x$0{~Jm* zZd3IcsvQ&Sx9PaA?K|0z=%(IDl#II48ZYOUWj8WYhE`E6i-T=3a5WE~nj#lzN|t1y z%Yjrbu^+{+{vBm9wUK6Vn2$rVDCm3!b6*r=Zj#}75$u1CY4~1$PKwvywf)F7`-bWb7^(@!$kyl!)#hdbBeGka#L*mPH6Vl%#ehCLZ0lQo)8vpX-|=U%^YHZ(^pK)PuT*2twzSMw+U1? zHTTvah#CbU6}32|fKsK+y|q|_wF)9C)=3mi(_KKIc0eD|GPLeq(^jxSptZ7WmuY6(1_zDQ zF!6=39@Vwjj4cX2qT+r$Ah4l={GgVyP3vT&S06S~`Ly2Qz6Lqu#*Iw3izI3%N)~=NPfi8p<)+y3)E=?1Ic_gYw2XrfWU%Mixwpu z*6u-@f{zKzDA3+zw1T|?iwb=*nz~H8!^~#}+E1kPtZkSX1^Ws}=z+w(l7Wv4ES!Sa zozK|Dh+Z5IVLy_R$-8ADIG~~zeZ)MZ+etmkTw{||PU4Cy=r4r07o~lcVe6#aL%2t} zN;^Jeu8H%V<6-&{Bb)w{S^@N?OGTGR#yNb7VvkWBZ3AhMUz&!#{*9jw`TK zTzMpdP-RGamG^>Pb33Be1Cg_|hXn zQp=ArTHRcy;D-X6rzt6!H&hg5gvFV01!l^!*_9tTqFX&Ot1(hL&6Jkz)ht84d!0Ue z*dV)hRLZ8MIPZFti81O^4iq|8n@$kAd#zY!?o#2HZ|Tfjv9L21E8#CY1Q2I%)GL?* zt1HRfl5QyJOFL(ghT9oHJZYX6=?9*6SSN}Zp#1P7t>n!k{fd*k!w*TPpI|H$`%7v8 zB?B&fKVY|IRa36#8IfG9wAs6vn)M`UYpG*(P_h1yIDwobE?pi-ISFBU;N0XP z!Hv3+%Y#xSa0O4elcg!fobpv_Lod}zVw4m=5vRYmrsy~45FbjKc`K#6huXz=CG%RD zfT?_kY1%p4(z1JXd)OSv%?#i#A^a78Q}Bk&secz(I#r%6w>(GO3|o|?l^!ciBSvP_ zJf=rnmAiRbOzXMjou+v#pN-v4tdgEG!5*gaSZOM{LkaK%;#xYLWL~D-)I=tuTk$k= zqn=an4}ld^_{;Q{15@y}z~ahN=@oYuxR0liD*pZe=lNVHZ!oMv4f4{&HUJ*M_$F|H zZynA|Ak;Dm(bD=7l#A@G!jJfzfoeYI!pF2+gZcO|-{x_Qv+)!Bl&$+` zTR2Cs4YoXwx=GBM(kSnHAR+~gjy5UDd7d_bpW)}6aRCtj<*GrBoxh6N{Vgv-xs162 zlW6R^ipBkFCb1;y3;QOptUv019g(Y8)gSgxqB$B^9S&T^YJsa*-#>|s@@T|!Sa#q+c$9&huQQtL=Izrel zA#`86NNYBt8wYu2Jp>H{Z0lL?#@L?3qoin@dpLt9(do2j(M6j|+jejsa4(-rs9`Bq zVi~U=%aP#CYaidbc}qIT@hsahwr9{nEvxVp+p}oGIW*%Lv^rKiMDMKUwQU@~Af5z2 zzr?R-<7J58*LarRZo~on2EV0E>v0Ot;dexFj#3x#yyN5ZMSq^h3wY7-%6Ytm33_9a zI1i%ke`r*&N5SGPyA;H4QaGR>sDO2Lvpc|U2tI=EqpHK16NJBf&eVh*3Oac#?yA8h z>i2QQE`BZ-{9jc|T(umz-ZFunZCCM7DG3fneXSFCn6B|(#$kb{@woiPBKs-~I@9NH z;8+#$n~Nrp?+XX|FX2RARH@z)3@dYkSMV9oH2m4akL0BMS;&v%&cnfcnGqQd67S2T2yN(j;u@M{4&Zmt{>u09TkGnrrmU zd+e7?@lo!2ktx@UOu6nc#gBi}0k6?>k~0a^-Qd3`6l4`VaswL`82l4U=f4mBg>Gk& zJGGo5J4un+GK%nyMJHY00&CbxcU8|?@+=!SXUQA{w3TF+Y7cP`f8efM(G{N0>l)5g wzl?8R!gpUlolH~02~Jl@JvZ`4NAaKVXSN}ZzD~i@Jm$XXy}yNj;$H~=9}kld7XSbN literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.class b/2A/Java/tp/tp3-vehicules/out/production/tp3-vehicules/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.class new file mode 100644 index 0000000000000000000000000000000000000000..f93d03324ace0eea99689c262cd7cb05e5caf1d9 GIT binary patch literal 868 zcmbVK+iDY06kU5J%}mmyiRsO|)*>_&JD?y)N>O5B1F;kn^WsA}ot{jOj5A>_!H@Dq zeNY7b06$9HXEI`>c@SUrIs3NOzWw<5^*ewAY?oocv{0yE2}Qz_apa_~a8#N&u0M|C zRQbMq;3SiW&O}DBiW3pI(izHkNmu#uxrl@(kN%2U9*6BWdH6*MpVz#kD zD0^AOdu}|nP$$&05`7VP&LD|Y;4PzpRSRnstYd@FxYz>02*-q0-rihp>-CIx-qc)F z3Zc*r&m^JNSAjfA-=4~7C{BI0H2R?{{E>*1)^lSaIae`L_WyfUEvB6C{0Zhxb3~|m zG8xDT4W=;s5YwRH`Ko1(kEED QBg#6Ofmp0z>% literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/Main.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/Main.java new file mode 100644 index 0000000..489cae8 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/Main.java @@ -0,0 +1,71 @@ +package fr.uca.iut.clfreville2.tp3; + +import fr.uca.iut.clfreville2.tp3.cli.CommandLineInterface; +import fr.uca.iut.clfreville2.tp3.factory.ActionFactory; +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.io.Afficheur; +import fr.uca.iut.clfreville2.tp3.io.AfficheurConsole; +import fr.uca.iut.clfreville2.tp3.modele.Camion; +import fr.uca.iut.clfreville2.tp3.modele.Camionnette; +import fr.uca.iut.clfreville2.tp3.modele.Voiture; +import fr.uca.iut.clfreville2.tp3.persistance.*; + +public final class Main { + + public static void main(String[] args) { + Afficheur afficheur = new AfficheurConsole(); + + var chargeurs = chargeurs(); + if (args.length < 2 || args[0].equals("help")) { + afficheur.afficher("Choisissez votre cocktail: "); + afficheur.afficher("Chargeurs disponibles : " + String.join(", ", chargeurs.actions())); // Idem pour les sauveurs, mais le switch est beau + return; + } + + ChargeurGarage chargeur = chargeur(args[0], chargeurs, afficheur); + SauveurGarage sauveur = sauveur(args[1], afficheur); + new CommandLineInterface(chargeur, sauveur, factory()).executer(); + } + + private static ChargeurGarage chargeur(String choix, ActionFactory factory, Afficheur afficheur) { + try { + return factory.create(choix); + } catch (IllegalArgumentException ex) { + afficheur.afficherErreur("Choix inconnu !"); + System.exit(1); + } + return null; + } + + private static SauveurGarage sauveur(String choix, Afficheur afficheur) { + return switch (choix) { + case "noop" -> new NoopSauveurGarage(); + case "texte" -> new TextFileGaragePersistance(); + case "binaire" -> new BinaryFilePersistance(); + case "tsv" -> new TsvFilePersistance(); + default -> { + afficheur.afficherErreur("Choix inconnu !"); + System.exit(1); + yield null; + } + }; + } + + private static VehiculeFactory factory() { + var builder = VehiculeFactory.builder(); + builder.referencer("camion", (ctx) -> new Camion(ctx.getSaisisseur().demanderInt()), Camion.class); + builder.referencer("camionnette", (ctx) -> new Camionnette(), Camionnette.class); + builder.referencer("voiture", (ctx) -> new Voiture(ctx.getSaisisseur().demanderInt()), Voiture.class); + return builder.construire(); + } + + + private static ActionFactory chargeurs() { + ActionFactory.Builder builder = ActionFactory.builder(); + builder.enregistrer("stub", StubChargeurGarage::new); + builder.enregistrer("texte", TextFileGaragePersistance::new); + builder.enregistrer("tsv", TsvFilePersistance::new); + builder.enregistrer("binaire", BinaryFilePersistance::new); + return builder.construire(); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/cli/CommandLineInterface.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/cli/CommandLineInterface.java new file mode 100644 index 0000000..ca1fe1c --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/cli/CommandLineInterface.java @@ -0,0 +1,35 @@ +package fr.uca.iut.clfreville2.tp3.cli; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Garage; +import fr.uca.iut.clfreville2.tp3.persistance.ChargeurGarage; +import fr.uca.iut.clfreville2.tp3.persistance.SauveurGarage; + +public final class CommandLineInterface { + + private final ChargeurGarage chargeur; + private final SauveurGarage sauveur; + private final VehiculeFactory factory; + + public CommandLineInterface(ChargeurGarage chargeur, SauveurGarage sauveur, VehiculeFactory factory) { + this.chargeur = chargeur; + this.sauveur = sauveur; + this.factory = factory; + } + + public void executer() { + Garage garage = new Garage(); + try { + chargeur.charger(garage, factory); + } catch (java.io.IOException e) { + throw new RuntimeException(e); + } + /*while (true) { + }*/ + try { + sauveur.sauver(garage, factory); + } catch (java.io.IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.java new file mode 100644 index 0000000..2db8d5e --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactory.java @@ -0,0 +1,22 @@ +package fr.uca.iut.clfreville2.tp3.factory; + +import java.util.Set; +import java.util.function.Supplier; + +public interface ActionFactory { + + T create(String type); + + Set actions(); + + static Builder builder() { + return new ActionFactoryImpl.ThisBuilder<>(); + } + + interface Builder { + + void enregistrer(String type, Supplier supplier); + + ActionFactory construire(); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl.java new file mode 100644 index 0000000..8fbf25d --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/ActionFactoryImpl.java @@ -0,0 +1,42 @@ +package fr.uca.iut.clfreville2.tp3.factory; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.function.Supplier; + +class ActionFactoryImpl implements ActionFactory { + + private final Map> suppliers; + + public ActionFactoryImpl(Map> suppliers) { + this.suppliers = suppliers; + } + + @Override + public T create(String type) { + return suppliers.getOrDefault(type, () -> { + throw new IllegalArgumentException("type inconnu"); + }).get(); + } + + @Override + public Set actions() { + return suppliers.keySet(); + } + + static class ThisBuilder implements Builder { + private final Map> suppliers = new HashMap<>(); + + + @Override + public void enregistrer(String type, Supplier supplier) { + suppliers.put(type, supplier); + } + + @Override + public ActionFactory construire() { + return new ActionFactoryImpl<>(suppliers); + } + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory.java new file mode 100644 index 0000000..131ddb9 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactory.java @@ -0,0 +1,29 @@ +package fr.uca.iut.clfreville2.tp3.factory; + +import fr.uca.iut.clfreville2.tp3.io.Afficheur; +import fr.uca.iut.clfreville2.tp3.io.Saisisseur; +import fr.uca.iut.clfreville2.tp3.modele.Vehicule; + +import java.util.function.Function; + +public interface VehiculeFactory { + + String nommer(Vehicule vehicule); + + T creer(String type, Afficheur afficheur, Saisisseur saisisseur); + + static Builder builder() { + return new VehiculeFactoryImpl.ThisBuilder(); + } + + interface Builder { + void referencer(String type, Function supplier, Class vehicule); + + VehiculeFactory construire(); + } + + interface Context { + Afficheur getAfficheur(); + Saisisseur getSaisisseur(); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.java new file mode 100644 index 0000000..0431a51 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/factory/VehiculeFactoryImpl.java @@ -0,0 +1,70 @@ +package fr.uca.iut.clfreville2.tp3.factory; + +import fr.uca.iut.clfreville2.tp3.io.Afficheur; +import fr.uca.iut.clfreville2.tp3.io.Saisisseur; +import fr.uca.iut.clfreville2.tp3.modele.Vehicule; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.function.Function; + +import static java.util.Objects.requireNonNull; + +class VehiculeFactoryImpl implements VehiculeFactory { + + private final Map> registre; + private final Map, String> noms; + + private VehiculeFactoryImpl(Map> registre, Map, String> noms) { + this.registre = registre; + this.noms = noms; + } + + @Override + public String nommer(Vehicule vehicule) { + return requireNonNull(noms.get(vehicule.getClass()), "type de véhicule inconnu au bataillon"); + } + + @SuppressWarnings("unchecked") + @Override + public T creer(String type, Afficheur afficheur, Saisisseur saisisseur) { + Vehicule vehicule = requireNonNull(registre.get(type), "type").apply(new Context() { + @Override + public Afficheur getAfficheur() { + return afficheur; + } + + @Override + public Saisisseur getSaisisseur() { + return saisisseur; + } + }); + return (T) vehicule; + /* if (null instanceof T) { + + } + if (vehicule instanceof T) { // trop beau pour être vrai + return (T) vehicule; + }*/ + //T.class.cast(vehicule); + //throw new IllegalStateException("dommage"); + } + + public static class ThisBuilder implements Builder { + + private final Map> registre = new HashMap<>(); + private final Map, String> noms = new HashMap<>(); + + @Override + public void referencer(String type, Function supplier, Class vehicule) { + registre.put(type, supplier); + noms.put(vehicule, type); + } + + @Override + public VehiculeFactory construire() { + return new VehiculeFactoryImpl(Collections.unmodifiableMap(registre), Collections.unmodifiableMap(noms)); + } + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Afficheur.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Afficheur.java new file mode 100644 index 0000000..b0cc4c1 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Afficheur.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.tp3.io; + +public interface Afficheur { + + void afficher(String message); + + void afficherErreur(String message); +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/AfficheurConsole.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/AfficheurConsole.java new file mode 100644 index 0000000..2772668 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/AfficheurConsole.java @@ -0,0 +1,28 @@ +package fr.uca.iut.clfreville2.tp3.io; + +import java.io.PrintStream; + +public class AfficheurConsole implements Afficheur { + + private final PrintStream out; + private final PrintStream err; + + public AfficheurConsole(PrintStream out, PrintStream err) { + this.out = out; + this.err = err; + } + + public AfficheurConsole() { + this(System.out, System.err); + } + + @Override + public void afficher(String message) { + out.println(message); + } + + @Override + public void afficherErreur(String message) { + err.println(message); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.java new file mode 100644 index 0000000..dc4cdd7 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/NoopAfficheur.java @@ -0,0 +1,13 @@ +package fr.uca.iut.clfreville2.tp3.io; + +public class NoopAfficheur implements Afficheur { + @Override + public void afficher(String message) { + + } + + @Override + public void afficherErreur(String message) { + + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Saisisseur.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Saisisseur.java new file mode 100644 index 0000000..34a7123 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/Saisisseur.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.tp3.io; + +public interface Saisisseur { + + String demanderMot(); + + int demanderInt(); +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.java new file mode 100644 index 0000000..7984042 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/io/SaisisseurConsole.java @@ -0,0 +1,36 @@ +package fr.uca.iut.clfreville2.tp3.io; + +import java.io.InputStream; +import java.io.Reader; +import java.util.Scanner; + +public class SaisisseurConsole implements Saisisseur { + + private final Scanner scanner; + + public SaisisseurConsole(InputStream stream) { + this.scanner = new Scanner(stream); + } + + public SaisisseurConsole(Reader lecteur) { + this.scanner = new Scanner(lecteur); + } + + public SaisisseurConsole(String lecteur) { + this.scanner = new Scanner(lecteur); + } + + public SaisisseurConsole() { + this(System.in); + } + + @Override + public String demanderMot() { + return scanner.next(); + } + + @Override + public int demanderInt() { + return scanner.nextInt(); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camion.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camion.java new file mode 100644 index 0000000..ecb9ec8 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camion.java @@ -0,0 +1,9 @@ +package fr.uca.iut.clfreville2.tp3.modele; + +public record Camion(int capacite) implements Vehicule { + public Camion { + if (capacite < 0) { + throw new IllegalArgumentException("Capacité invalide!"); + } + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camionnette.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camionnette.java new file mode 100644 index 0000000..564bde1 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Camionnette.java @@ -0,0 +1,5 @@ +package fr.uca.iut.clfreville2.tp3.modele; + +public record Camionnette() implements Vehicule { + +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Garage.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Garage.java new file mode 100644 index 0000000..ef49b8a --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Garage.java @@ -0,0 +1,25 @@ +package fr.uca.iut.clfreville2.tp3.modele; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +public class Garage implements Iterable, Serializable { + + private final List vehicules = new ArrayList<>(); + + public List getVehicules() { + return Collections.unmodifiableList(vehicules); + } + + @Override + public Iterator iterator() { + return getVehicules().iterator(); + } + + public void referencer(Vehicule vehicule) { + vehicules.add(vehicule); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Vehicule.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Vehicule.java new file mode 100644 index 0000000..9266bec --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Vehicule.java @@ -0,0 +1,6 @@ +package fr.uca.iut.clfreville2.tp3.modele; + +import java.io.Serializable; + +public interface Vehicule extends Serializable { +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Voiture.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Voiture.java new file mode 100644 index 0000000..30276e8 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/modele/Voiture.java @@ -0,0 +1,10 @@ +package fr.uca.iut.clfreville2.tp3.modele; + +public record Voiture(int passagers) implements Vehicule { + + public Voiture { + if (passagers < 0) { + throw new IllegalArgumentException("Nombre de passagers invalide!"); + } + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/BinaryFilePersistance.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/BinaryFilePersistance.java new file mode 100644 index 0000000..e9f75f0 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/BinaryFilePersistance.java @@ -0,0 +1,48 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Garage; + +import java.io.*; +import java.nio.file.Path; + +public class BinaryFilePersistance implements ChargeurGarage, SauveurGarage { + private static final Path CHEMIN_FICHIER_DEFAUT = Path.of("garage.bin"); + + private final Path path; + + public BinaryFilePersistance(Path path) { + this.path = path; + } + + public BinaryFilePersistance() { + this(CHEMIN_FICHIER_DEFAUT); + } + + @Override + public void charger(Garage garage, VehiculeFactory factory) throws IOException { + try (InputStream lecteur = new FileInputStream(path.toFile()); + ObjectInputStream lecteurObjet = new ObjectInputStream(lecteur)) { + Object object = lecteurObjet.readObject(); + if (object instanceof Garage g) { + g.iterator().forEachRemaining(garage::referencer); + } + } catch (FileNotFoundException ignored) { + } catch (ClassNotFoundException ex) { + sneakyThrow(ex); + } + } + + @Override + public void sauver(Garage garage, VehiculeFactory factory) throws IOException { + try (OutputStream sortie = new FileOutputStream(path.toFile()); + ObjectOutputStream sortieObjet = new ObjectOutputStream(sortie)) { + sortieObjet.writeObject(garage); + } catch (FileNotFoundException ignored) { + } + } + + public static void sneakyThrow(Throwable e) throws E { + throw (E) e; + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.java new file mode 100644 index 0000000..6d4fa0f --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/ChargeurGarage.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Garage; + +import java.io.IOException; + +@FunctionalInterface +public interface ChargeurGarage { + + void charger(Garage garage, VehiculeFactory factory) throws IOException; +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.java new file mode 100644 index 0000000..84cedf4 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/NoopSauveurGarage.java @@ -0,0 +1,13 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Garage; + +import java.io.IOException; + +public class NoopSauveurGarage implements SauveurGarage { + @Override + public void sauver(Garage garage, VehiculeFactory factory) throws IOException { + // noop + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/SauveurGarage.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/SauveurGarage.java new file mode 100644 index 0000000..0e8c751 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/SauveurGarage.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Garage; + +import java.io.IOException; + +@FunctionalInterface +public interface SauveurGarage { + + void sauver(Garage garage, VehiculeFactory factory) throws IOException; +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.java new file mode 100644 index 0000000..fdede3d --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/StubChargeurGarage.java @@ -0,0 +1,18 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.modele.Camion; +import fr.uca.iut.clfreville2.tp3.modele.Camionnette; +import fr.uca.iut.clfreville2.tp3.modele.Garage; +import fr.uca.iut.clfreville2.tp3.modele.Voiture; + +import java.io.IOException; + +public class StubChargeurGarage implements ChargeurGarage { + @Override + public void charger(Garage garage, VehiculeFactory factory) throws IOException { + garage.referencer(new Camion(9)); + garage.referencer(new Voiture(4)); + garage.referencer(new Camionnette()); + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TextFileGaragePersistance.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TextFileGaragePersistance.java new file mode 100644 index 0000000..06d8cd9 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TextFileGaragePersistance.java @@ -0,0 +1,63 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import fr.uca.iut.clfreville2.tp3.factory.VehiculeFactory; +import fr.uca.iut.clfreville2.tp3.io.NoopAfficheur; +import fr.uca.iut.clfreville2.tp3.io.Saisisseur; +import fr.uca.iut.clfreville2.tp3.io.SaisisseurConsole; +import fr.uca.iut.clfreville2.tp3.modele.Camion; +import fr.uca.iut.clfreville2.tp3.modele.Garage; +import fr.uca.iut.clfreville2.tp3.modele.Vehicule; +import fr.uca.iut.clfreville2.tp3.modele.Voiture; + +import java.io.*; +import java.nio.file.Path; + +public class TextFileGaragePersistance implements SauveurGarage, ChargeurGarage { + + private static final Path CHEMIN_FICHIER_DEFAUT = Path.of("garage.txt"); + + private final Path path; + + public TextFileGaragePersistance(Path path) { + this.path = path; + } + + public TextFileGaragePersistance() { + this(CHEMIN_FICHIER_DEFAUT); + } + + @Override + public void charger(Garage garage, VehiculeFactory factory) throws IOException { + try (Reader lecteur = new FileReader(path.toFile()); + BufferedReader lecteurBuf = new BufferedReader(lecteur)) { + String line; + while ((line = lecteurBuf.readLine()) != null) { + Saisisseur saisisseur = new SaisisseurConsole(line); + Vehicule vehicule = factory.creer(saisisseur.demanderMot(), new NoopAfficheur(), saisisseur); + garage.referencer(vehicule); + } + } catch (FileNotFoundException ignored) { + } + } + + @Override + public void sauver(Garage garage, VehiculeFactory factory) throws IOException { + char separateur = getSeparateur(); + try (Writer writer = new FileWriter(path.toFile())) { + for (Vehicule vehicule : garage) { + writer.append(factory.nommer(vehicule)).append(separateur); + switch (vehicule) { + case Camion camion -> writer.append(Integer.toString(camion.capacite())); + case Voiture voiture -> writer.append(Integer.toString(voiture.passagers())); + default -> { /* Je suis un cas potentiellement oublié */ } + } + writer.append('\n'); + } + } catch (FileNotFoundException ignored) { + } + } + + public char getSeparateur() { + return ' '; + } +} diff --git a/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.java b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.java new file mode 100644 index 0000000..2188bba --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/src/fr/uca/iut/clfreville2/tp3/persistance/TsvFilePersistance.java @@ -0,0 +1,21 @@ +package fr.uca.iut.clfreville2.tp3.persistance; + +import java.nio.file.Path; + +public class TsvFilePersistance extends TextFileGaragePersistance { + + private static final Path CHEMIN_FICHIER_DEFAUT = Path.of("garage.csv"); + + public TsvFilePersistance(Path path) { + super(path); + } + + public TsvFilePersistance() { + super(CHEMIN_FICHIER_DEFAUT); + } + + @Override + public char getSeparateur() { + return '\t'; + } +} diff --git a/2A/Java/tp/tp3-vehicules/tp3-vehicules.iml b/2A/Java/tp/tp3-vehicules/tp3-vehicules.iml new file mode 100644 index 0000000..8cb7438 --- /dev/null +++ b/2A/Java/tp/tp3-vehicules/tp3-vehicules.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp4-fichier/.idea/.gitignore b/2A/Java/tp/tp4-fichier/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/2A/Java/tp/tp4-fichier/.idea/misc.xml b/2A/Java/tp/tp4-fichier/.idea/misc.xml new file mode 100644 index 0000000..a346fd7 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp4-fichier/.idea/modules.xml b/2A/Java/tp/tp4-fichier/.idea/modules.xml new file mode 100644 index 0000000..5e24095 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp4-fichier/.idea/uiDesigner.xml b/2A/Java/tp/tp4-fichier/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump$Visitor.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump$Visitor.class new file mode 100644 index 0000000000000000000000000000000000000000..e2ecd73d1fe0e7f9b12e72ff243500e3d238f12e GIT binary patch literal 2594 zcmb7GTUQfT6#h;~7!n7>3#jzsU6Tk*MWn6q3P?=}ff^g@h1Ovh!sw7mCo`yRt?kd~ zFW}j=DwcNj^3;d^hQ9Sz)U~Yr&dEhk8|_*!XJ((h_u2c~-`*#G{PW{408ZoE1R`kD z5Y-VwyFm9%bJ;Xpvs^N!=Wg0oAkco&DLcVwfwp9-7)J-<8WK7-K^I6b_(o`%h7$&c z;L*hf9?MMW^Zno-d$Tq3_#ey4;>q$CRnE;JCIiV+M;E4P62| z)duAgluw62B@7CIZ<|XAbYqK#tva@0yTHK~2QPW^wyPWnM9b!q%>$FE+L0x(flX5X%Q?lN5@lP`LxJKdOvbo-``x9~Qx3p|+!acu-pPc4%` zC-z9t_X=#OyKd~IiZa{%Iu78Vgv~1l3bw5cCt={YM$V}Q%;7MS8d5saI3m!ca%gS~ zbU1w8*52 z8a`}zV+pd;=kHi{C2+j5WP47>6!MHVXq+L?Q=`I0WtMbCQuL$NZBb+AxZ|_AJpZnS z0@=KgdS*a^&V_-kNPMpGmB7bfte16sf-8-Ho7|H;s|swk*e!wG^e=F+o_14Hb=$S) zTJS&4%)FH1GE=hdy1=1V_F=Znc1++JKGpFVZm@#Oav%r{Cvz=~m6GQh%Dg^8RH^0! zjQ?pTu;Zl|q>3ci7{eoMIj3yr!=*Xfza)9YM#y=V=@w1jk>7P;G+1;9a(}DH$%^%J zPZC`vQyT>7mRUa=UCdQLSo|O57^$imDA3m=-t+U3#|YUk3u@dPZWZ9VL)avRz_e~n znU#8mT`Jaf^f6u|;HJ8YI%X|8F8l2@3{`a*dIy_y+3`YR8=r5q#w&1su94^^QSd_F zvTH!cWf2BtW6^!yt_BypYM|k3fqgCLQ!k!?o-LPcf6O&GI~bK#ry%xlBt#%!@)?nr zAg|GgoDf{wD38J7bDm!lN&`rwA3>y#JcRZ@>DqjDQ5Q%eiWK4;-3$Ecr9QP$!Xj7s zCcU$)aB#EcQ}oj!#=X){=)98t9@>#rY+gf81Z#Lh;1PCDQL=9hhXnEiYv>pF4t;zX z68H@xt9WlD+TRmh#mSYYfAz28>Uv$0Vm} zjy+%C3e4gLvfPo0q!}hKNG$^y-XQ02l=?%o7^L1XHHQe*F(!CiB{|ISGib*xxJ;#w z{+3W?;wI%DL6i`bnh=yw!RJifr}QW~p5TCnP7MQ(v3o+p*i-O_i-ryj-AXrQ6fi<8)gQ+zv3oX+3^&Jw3lW<5rm30jTg zGS1^VuP;f68dlv1v8>9T$88cKLY-$=%{H-`#U0$OW3>mdCpfI3msst8jEDp(qJWx_ d5D}U-e8CeU_!3{K^&akXP0+pr_wWr8{{pa)iTeNm literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/io/Dump.class new file mode 100644 index 0000000000000000000000000000000000000000..9a389c7a32a9356c099ecc9c97eb3ed320e0b188 GIT binary patch literal 1459 zcma)6Sx*yD6#i~on06SpVHZIP6}up#h-(p4zywp4q^1e+X(+et;B=;$nWFqG6A+?N z-+b^l8RNM#Bho+`UhZ=4Ip;gyS?;etU%mra#=49Mq7q^XI?&0`cc35YnyFh=ZF}#4 zmpz8gCBrhjWrk=vQ%WF?galbZ7Zir+ila5lx@I&zt!!2terT8`U(noYMKf$|tyym{ z#4LNCGo%Y`l&@~m|WW-X+92>A<=ZXGhego zT*e@VBn&GU!DtJU;*sm|Izv~LdpnNZ;Es31Fq;mX`eciqV_4OE=CVk_jaFyAW*2T^ zLc*kiTbN={FNenvu`3MuD^T8DMhSsi3Cfg+X;GLNhLvll@2XT~N)m1}WZP6AELW;z zxQ1stGE%rBu+t19A&1uJG9?*VdVk^C@>fn+j8=iY$s@nFsi)h zz!dH&xQ_)YzE^YX5Bi=-?KKqeCK?;t>mSR!;Tg7-rw&^6yRWxkSbVEl-{a2Pz(6h7 zW!)_4jv?-$Fy_?^mm$@zSHnz^?_65~7dTVg6v@6n4pK;rVeT3z|LQ?#-9=9?zu(jw zVXX2wO;^GS!+_s}tqEX|i+0l~^Vc*slrS-o^FoiNVT-%oCKnkY#>$3eac9-kU6<2U z3KNbb^%Bk3}Ed_m_3 TUgA|KOJS8xGQFnAVh!?NxK>&s literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.class new file mode 100644 index 0000000000000000000000000000000000000000..3a87cd9534a6dfdf1b33e387f6bf7719ae66b522 GIT binary patch literal 1004 zcmbW0-)_?|6vjU%ZPTQo8yy{mtuWYt{(*Y*wrCQnw5tk`iaK$bW^U&xO^}lg@m7Ff zlR)ADcqqhi7SRoLn#4tpePW;A`SRKM_51rz0DI^@k>)=Ez17wgtyU2`)otqWIkRxSS{44<<^S$RH419#1EH79EO!_oFb5 z0x?XK@MZ*yvq^Q3c9Ic)qhy$zulH<}v0`D>#Z8UBpl0|nP6PqWXr4GEVoeLa#ZYT3 z1!<*ath>0aIi^s`!5!SSu;F48b%wPi?HTg#wHSt6qu(6qiu-!|7DF{_lR86UWjO6M zM;0D3@M}FdP%`nx3lnmEvW8)0AVcwLJ{t@5RxdMD29fUtBTq@4XD@Tfk&GF32iNww zOi<(hU?n7Jjx5xQqPTL}zekAfi;3gQeWU#nTL2!LT|&aez` zo?(Bw_>gb%oXM?vuH-p}RnHeP6$J@~aet@n8D_5R2(ijr2@FG(wniBS(wWLI7{*lW z#W+J;Zy09P5f+I8Okb0<@*~)X2?diX_TvDX$8j^j`z}4 zpsLilx!}~>O+sFNq>Gkk*j9>aIjv#_Cm0Si`G#1uEuDLJ46i|NuE#CUeI?$|>8R0A zlz@i!WXjVFlTpt*DwPprF{|K|iuZAvA-4+$HVxMx+T?r|RDuOV(ie9*MG)!YE+DT^ zFrOh0_Td8+XKsCd7_{6rWS^5zZ6gHo4gr6!yVRv3zzc+LS|GCXGmP0T&f~ zq9TtuDr%1;y+gz@!xIjt7$kMWbooeyP@Yc^C#U4&l8VdHqmh)ezZWm@G^Wl)4^w`kD%>&TIus6i4TCsy>TT#q9H|+m2u4F{r?(7qeG;E}y@?^Ih-x|BSwZ_s=UQ?bWyQigN8V)ScpYET9x++jGgTcmyU z87_Ay{ZgyV?S>RgiC*F3p55uF+MDV{is!dC5#z0FCQ5eO(ZveUfu>w{z@3&I!m#&> zZF{cg@YbsE8g|tk8-kU9jh2FMWslM@nCUf>VQtzQBD^DmiN3=9OPJxOD5JuI0q9k3 zRZZc}6m5H>-O5KIda1wt5%iK`d8;M*9KRPq=yOSi5R2S2OEf9-anOaAEmIe1)y_AA z#!Z@6)h$i8EsqyP49MmS!2vpKqe7*_Os=+!ZWKIEyBCUEwO& zVmPrQOZ|dZ@IAwk-H*~m5o8L-Xi^T+?>b_1+26oTdcQ>%YYZi% zr0H29$qfw9DPSTyJ05%S6a(4k7{2=yBflg0tFLi~o=G|d!ii&)uBmZ+L96|N9`52x zS`h;7;VVL=y9Qr}=vU~BL{DaaLvnT-sTlso;4dVJLE;Y4IjPyhOLp;+UA%8_Kg4T< z-cI{?PjHYh4-eoUOgx8nca{Xta2$AwlYdF)2Ye%e^9RZ8DcU>~F*e;bHjM}1WMtjf zV#n!KM>Vv1IgBDco83kxhF)G0eso7EpIQVq-i3`rphhS(NN_epJ5M??YE{OtjT}|( z!OyggW@N@kQ-gCM8k1K&osw0%NIMc^EWr4XVH+Payqefd1ZFIR320C!^#riq5I5Cn%Ktb!(7f~uf5maYoGJ`n^&&^Oyg?>F@|Gx zPj4Drx0*sX?7C-eShj7R(fyUW-f(NCtZJ-&7Bp!B0S4kDU@8+n3p3PNz!7!*{ z2*V7D;X1-}1jA4W8kkC}f{H!Zt01jmA4VC{ZRDa$vuFBF|OeljuUTQs}YCJ%*`)9Boc+(Jr!Bx6y!Bb;3N^+o?M1L;TBi97i5$n zkNu`>e*YE)@(6qxFG`%<5nUP2*a^FP_A4>DSb<=BDzAx*j;u0<^xT0YO zMTX&a4oakt71Lwr7w)_vxE&(NWS0KL!8HxD_=rI>Jd;bAT;;M_hgty%t6}P8*Wk8X zSfEj1gxaX2;bVNlFxud2X3=#FE*34ZN`JoKjv%ew>a1VHXlE~kGhLi?30J|~?!^m} zzvx*)>YIF;yg_oidTsW~o$|tio7Zm7l`56e{EZ3&D^ZqO;Z~(I<3Q{w)w*J>I9xP6 z%EH*TR=C(fK&rYhUDzhnh-j`#r7Z?W!C={P%p1+dvgs|zuoy;ybXK_+v|%)v5UUnt z?Zp2S7elH}atzfo(h*h^0C{Ouu-(}V<2xq1Qc6Ce98#o-Y*8{{20f&-xG$u(DuNqp zb9_CBTmkKiEzxQ+XcC60T^poZgHfx<^P$ykr+3RiS9{8aa6{${YQ=4Oh8cEiul!8P z4xz(h#&rcz;OldySaoauU=Lgs>-bWEC-qGEA8$94-hC_Gd?9hV1V}#g zlo7*0+`v5j-=u>hhFchs_Zf|E2jdD-^siun-gju`CgQXU*qfgijy-*jc>Xu^-hGa~ zUor4=U{R&_0PO1nyms* zxv&Z=ph>rBgf3@g|5yB-RB#W5NKg0X<6kcGOK38AiIeUk-WYiVH02Bz~9~~f&%~m literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Inode.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Inode.class new file mode 100644 index 0000000000000000000000000000000000000000..bcc12e6f33efee6b8eb1d1cf36ea7fceba75a6cb GIT binary patch literal 1485 zcmah}*>2NN5Ixs*Vw$*3*OZdb1xj(!#ig_lP*e$lkRpXeYL$1_IOSH3jclh#{U#nj zq5|>22k=pdnQM1Z>b5U;a_u=YXU-hw@4w%F0PJGB1Pwz5bQ1*>1;&n?W5@QL;Lv`5 zaOAm(K=FkPWU?zTWHma&xPxH>B@<z$A9f4-ag%kS`dB_s9BA){?!!K=B|lZ+!HX}$a4~E!UY6oZv@p%+-J}j%_Fcv2Tx-Xbxcv^X)M#*g|sdn!=f8?Q2d1Y z#SArFpn)bpaRsaNoIHwZ#>=M2xrOEr%zUFC8n|&$J*=w+W}1*S5ai!HaBUF0kPBYJ zI+bHZcBz%dtyqoP#mxK{!c!E82+vndv(D!$@&`mU1WletWNwg%l}p6VCvr*rl*lR( zS-XY^FPe#zu|X#fby-ehkjO?ZkqYhPDtP28RlB^4?OgB^Y-ZpKIcwyrK{=n%6wj}j Nf=$9xJXIaH{sZ?G{Zaq` literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Partition.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/sgf/model/Partition.class new file mode 100644 index 0000000000000000000000000000000000000000..b0dd38b10a72e07c674b35da25460e3c8ce111be GIT binary patch literal 2475 zcmb7F-%}e^6#g!3ayQGi{AfcPt8IX`kU&|B6*WPGLMzcgYeBSBbe7E}Y*}{W?gs6< z|Aeo;_~L_|sqGBTpguX{U*tHB_3RHwkXX_g*xY;WJ>U7xcg~*u_cg=X zbj7Y|Szp> zV~C-DX;^rEwx)a8x}B{!o@WX-JJ3f(zoOzQh8bkvIS_EBjhY-5vY0!rXn>njk;f?E zZt33E92Jm3dpX=v0CP>nI5cWI@nv1NJcikq0%_uQXX7E&ub5k77;OV1YP#GiHEP7Z zyKLHGslKxz+!cMpqI~+wj-gwtx@!je*eLm1Cea)_x%>?Ysf`zfzvWcOr0)n{xP-u6 z;W^eW#o20u?qPQpn^Hb#`jfdt*-}4OOt&rajd&zbjo#`&jz$y5kqOZFiiQTGd=kMe z`aRR)6(o!bH7LWWWnVY87xh}GCdUlNErzS@jR=ObBQ3fy9957z?`Gp<0G00 zgw|fqb+rGIYw1`ve!jRfHKw)^?{MwuLuCpz)=;DHIS1jROE<4V4z1E^JnhF*>t~{!V zdEptZS))@sKRp4V)MOWa(|7SWH4hgew|UES2*3~I@?g&QIZkK+Nul}732lsB%^N2-HH2~|1xOwlSy>jYjW>vh^q({FID!=oW6^P1@1@5RGAy)(J+NAjDgEo1O&A`pHcp+xl4Fsi){(8ZAiI3W-c&e=^xQ z$98Ls19I%T14noc{&XBF=eUXa={W=Ty6H|abF={bECWgh&cIeIweIOgfe z$o+5JAk$w+{YkR-()Z?eq!9(B*+A|*zlX~}kj-)3)#yshs+T@1@3(Lt0e)!9eH;t1 zdyr5E`N;XvJ&gUIe^hq)P!t&@5;Nf4g%4vSE!$xZ@65QhI^ag;?6_w}sC(9x@g#NZ$#M92)FH`9y_HW`Lw7T(K~i3cCRhcecP z33K(*)!*OURex1~eSdrcsNp1s6w(GV1!S>8C{N^E3Rik#(HTyZ6B1T#w5P)wA$@u_ zFtAFv82KV{q|i|)9CzfaxprN3C4%utOlL336XY#~F)K3c7w8AFO-m``TCzd$17`nG93+s#&^7hhn9`FpF=?=Gb@q0s3yP0L8(J$n}Uj%w&Qb2-s< zHJ&3bVeoj_HukZG9NWsrU82BTOz=8$DZyptjRaSiHxsEU7kFOugO%#2jdvIS)tit=351D12tYu7V5$WZUt8&2!act`xw)b5*tW=z^l3N03J$AS`b&_@(nZd zzIndx4*(mCLIezySgHgkRh1-kVr8wgmMbdKglbi&(pcK(<|5))KY00pd9e%W4U705DT+d^MaTDAs>uQX>Iif$(AA3^~olIqgY@biRX_p?f Y&%n@en}NW=_t1wQ5n|vJNA7h*Z<^gu$^ZZW literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/CommandInput.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/CommandInput.class new file mode 100644 index 0000000000000000000000000000000000000000..81730cc3506e609608b68900fedfd405536dd216 GIT binary patch literal 171 zcmX^0Z`VEs1_nC@PId++Mh4BaBK^|jME%Ut68+?yw4&6q%$%H5BmLrx)SMiB=ltB< z#Jm*Gyn@mab_Nzk27#=^vPAuy#JqHU|D>$cW&*1Axw9U|k literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/FileCommandInput.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/FileCommandInput.class new file mode 100644 index 0000000000000000000000000000000000000000..292f441045f8dee871ed8f94d9541f10ae65dc2c GIT binary patch literal 1040 zcmaJ=TTc^F5dNkuEG^p>N&yiSQNgwdt9VV8keCVyNfnZsCi-^RF7(jtZruyfpW?s3 zM1z;a`0S4|&R&F;7#?=!%$&J=^PSn>f4=_&u!(0mq>xsSQ89v1!o-m{7MdmOLv45e z$TWPy=!UeVzez|}sx1X$gmM%V_|noE((an=hV=X#au`>js>q{2n2KU->1YSiGPP|M z9zk_Y(SB}OoEDnPmBw(`p71+*HFhTTJzvj3!9)mfk}#K~M7MRvvKXUuY`xmbVhUvi z(<){#OIST{wZIUX41CS74qWqCa`3w5bxg~O@YJ1NPuT4pyC3kFV@7N;tjPfYFU)s= zsgGk0R~5{wxQ6S5;yD4)JwcJ)Rv4~AC7Er2U|qrO zA>Nz5EA2xCON8pBGYsR;Hszr${J=E{OBV;&h#gVexW2xr6K4O4DW1PqBS7ow%!|N zKYU(K!TP_Q;+5LjJ-cDTh1b1EZ89Sv-}HsieJT10(p=LCT*C~Z5T-98S_|J5i@ZoF z5bp3-3YUrXGXE_p+>QJrsIacGXAc=Z0p;2$sP+TOo0YG~o}%~#rB6{tjb#C8mU)gX zaOEOa*qVv+a1X0&aRsbF<39KKoMHWdzlV6lGVIf0O|0i@pHcdTD};|2p_ACULHLDR hCw!g8dAlj7T(rQA!ggw$p0s-$#ZrNtPxzR^)4yRw`YHeb literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Main.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..803680ef895b652f480cb1b2edd7d68a0d1cc1e5 GIT binary patch literal 1962 zcma)7OLN;)6#lLsk)ygKbzV*1X&dUqi50@D#3ewJ6darfaWR;Xq-uDTp0x{2Z0~HFA(#u7GiFDz_PciT;r~yP9^UgHW=Q#K*E>SS^q%6!l~xAi+%xFXbP5+cn!+}sjw-If9IjaexMOOPM>r zncZ3JuNxNnzr_oCzrvBR{XGQ_1hg}2Z?x;K75u#pii#YfGOPEJcpo3I6P{V)Sel-| zT90D(O(P8LU;GYu7~L9&uhOU=D%cQM8YsMVs(0gCM>K(t2*U9W6l@L(QlxqpB;QVQ zD~WBnJrwiEG#Y`aU{_$~%$T-x%c1i%UNnJ`g5{XojrzXnJ=XVazDX5aL$^!1XGy;E zG8P2!*Bq?B|t~&#*twj${pe>*k|S?{p>9DsqP!rrZbu!?GS(smDvc!)-5r z5zsY;cz!}o<5Tb%pKn4u55;>tr5Lz~BF|)70gv%1xnY#>89`_)Hj$tv@OukNIW^qG zg+fTZLTW3dMoDciwvZ~P#+#Tt##EcR+GaAL z+46LZHuuV@x#(ZW{DH+LUT@;9mH2c#^-c@9aue?!W0l;)7S_o^?$|_Qc>a*i1!s@L|ekw_=XMnmR2$9>--y}BdGiX DN>vO< literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Shell.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/Shell.class new file mode 100644 index 0000000000000000000000000000000000000000..186b04d948331ea77706b477a340f8753eebee8b GIT binary patch literal 2871 zcmcImTT|Os5dMx0$jBlA6Ck010O8^*0@6#UDQQbcLu+tSr%;;Sgb_v{ORg+K@(23f zUyk!#A;8cjluE8)s`s_x_Oe!xA;I5{ zAQTB53NGO?!^oDSma>{^lw37yZaMm%VVe4kTHMx6Q_b)vLm+GC^P06;WVoCJKdKe~~nagddd3#eg)dkxs+NPdy9bL;4?xMSCmneXla3poH!$}@WA9s9} zVfy^TYmVV+8;7n1@_q%caM&D$?l|1w02f{5Z#NVSVVI%4pgFGL8n(p{Ki|!RLv4ZY zrh-w7G4y3ij-y-dn(gcwR_?ChP}*$g>Ay00q%BNNCvt|qyrz>Qr0PW zf?h0`20@>w^;F$VMjqD~_GCfK;!O!j1#@_d;nFeelu;x*K6{H{EL?lC+89X>rDy}L zOAO57j)J%G4uzZ3>2ObY>6BPFQwv=0F2i^&%zDGM97(uG>1+zjXI9#{GKy7l2EFMgoDf|8NdAQthF zf>o?BNV*7{=%ZHn4=f3D>-a>%V+Eh$Gls~SR%%<6s!}WNGF+kiP=FK_=JkP0*U}dp zB-KQF#>iQkTXG2I!>X#Na=Ml08c&`b#)+~_&L8~hlgP*M<0Emv?0VtCB23CR|Ocpq<0@QTGMnE zavG{aM$=HNX@t>#3+c9EgPvJheFHy9fJF2FEcz1C`T^R@kfSfqSw=7YT`S{yG*-r7 zG+xF?G*QO*w{*aVO?r+XK+irh(M2Fa=tVaM$n6NOVFLY#(`464BU*KWE#zoL?gV%y z-Z(rSQi9J|g2S*4!-JQmwV(DnqTfM|#Vd&Vv3Bg9f209}P;f)I8LBEDx#_?TcF7bO zfQdY5Gv3Lb@!tqMk3Ag=O+ClV3*27jZsPt5=6$H(T_1kL;!5IYbdmge=)DS-e0YZ8 z#7m^tNi;~m5&HG=?f3y6R`AFN4zES9(@$yQ9LcyzAV=wK3{%9*3dMQMO8N+H8kT@7 z)5U0`KyU{!Er9#+6SWo?g zU^Mm|pFjKicMj4oKwc7@C8&xfDScA{Sa0>H2aLX6;R;~fWjpQtfgXvzI2cMK@L}&C D{1E+; literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/UserCommandInput.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/UserCommandInput.class new file mode 100644 index 0000000000000000000000000000000000000000..7a266a28d258bedf96e814b6a318fd5a80a54bde GIT binary patch literal 683 zcmaJt@XYTfh{wp;q zi6s00e-vT%ju0V+4?8IR7wc6C3Hs>QfFev zelFeE$=d$}kRDRk*XV)k-%q>WJQ(m<;~2t*PBAt-Qvz0RvE^X`TB?iGJqi++GVO1fIm z&dr=*IDF^K{_yn;;0ZS+I)ri6aI%J7ifpxNWb0Jrf!j|}WgF_+_%+XdwZtXic4M}N z)%Xv7U2VihLMc13DGK3nxHt=}!&;P|Pj(mlEcht9I2kPoz4wqBD|4rr)Bj7nKZX$o zZ^=hj%hI)Or84zCL=!WhCEP9k3(b?a$FtFw3~nl8Wl|6b7x`s?a{Vh5dF!A&%`UF9 J7TM7QegLFlQH1~i literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/DumpCommand.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/DumpCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..7edb028aaf84c36dca16fcfc313d2d52342e8980 GIT binary patch literal 1859 zcmbVN-BS}+6#rcUY`U(1D7CT0E*5JdG;5)L)L5+ssI&>R4TU=P<+8aXSN0>bdxQ9& z^r^2M`{oNy?TjzH`A2nn?(RASA?kE8xnJk|oZmV7>faYH0o=x~CI*l*Flb>2!wh4O z_zrhG9<-d*%}2sj48yl%Ak}S#T(PunAkT1ND{{IncVt&NuD2D59qD;u&WT%FjtrfJ zuHP|X;)DUq!byxU%=eRM3(s@>uqixeaaXuqCBvW^21@Lb<(&Jt$xtqqYW>8?U@E*I zBXTy3o>WX27}L?5VwfquTXH!d>y^^FmOE|XjLyPfGYjEE3uo~WB z!&VrE9+MuyFj1@>6p>tzL5spOaDm};LZA{YuP*MoqNB5|D>ZH5;_EO)6lqLcvQR{c zA>R_J>hU-xX^Qpp24hvFD#VdFpR!IXE;gn4e570vBG`w?#v-2nR_Ot@TG-0 zt->UMx`<=m65|BXuPj`}HHNc3-xh=nm#Yn_+H{H)4-~m|4;8(7iESY?<#z?=+r z!foNCB~QV!#FMeW@Ov*zGR9QteX6i0;^|r#Zg)GCqd@6-IV8CDq$7@Df7rvH4$(?) z<76tT-18dLurwZiqDj>=9)e5U?(o>|bnX4WXoO@V!Y;C#HY=4)25UJ8M3i)(hz+bU zTs)G5<6<*F)jj`qRvLC`BB&>?(;#5@n%YqB^nswYLN|wYM*Gm^=U~qg@-1358OY-s zTCJ3UJ~4Ob#_%of(yE33K#qRE^?zVInAyVz&oR1(aXL+m7yib_1Nak@b-I2wyNA#B zaGAC%FE9@z#Ak`(0!_;)QlrhDBg5L@2z_e`7$eFECNYX@IF-0!6W=6J?x9L?km1ZJ teOkaG>06>#0|UPqm?{wScXS=VeJsz?eK!j&^51{y1T#-N+k2$2%}p@L_rS}hHE8Ttrav?ueoZ$ zDA{~ZHw=DRb;{f@)Phy5YGzT*IuA4c>sVfQbl0-Us#PjEoXoRjVY5#`KL$wbxJ9c* z;@Rv;rngIK)hcpBUAJ{t+cNm7Yjdrdj*ywCg7-xjolaRVxlsynP{9z+Fr2As6`rxo zg66L4ZkgU3S2JCQA)RRNYEd_MI+<;dLq2tLJKckGI4@&Z!3aKJQ2!@p0{R05!5Ib< z$BifR5nMoA#)k?%!p97$w&w5ZHs#E+pE7iqT9pjP5-ngy!7wg}xyW#_mFMGN1eAn= zBvK4vf^2JE8i(GRuerLRE(dbrWeU?WE-6qk!w~g|J933VE^AJX|46x}!rBlTmlb@1 zD+0PFJ__A0$Fz)333FQ_mQ5;=2(DsI!FAjqqW47QFr~;_Pb}~@ZJK82_TY>9r}{gUJ0G*(DFSK9)0sHYcfF526^1^~Q&R=2 z@8GU}ow7tJDwK7j$nXw|UWP?{#YW3awa41<$I!d#YK6**wi~d`bcV>PRkI7+=c~Ul z_%4YKpw7v0$6c}JbFUcxH7At}ESEMJfZPcyr zWAqSXfrHee=a4&}P(+jam{^%Qz$C*j7^Ih3hCgvNH%*Gyp1t|YzgZNq2RNhYI>rzL z3n@hC93y|@ViOU{3CtmZo3vzZ(|_+_5;@umk1*}wj}x{zqB%zdi|97$k!;`rzM=>o zlC%fXKNy!W^_obP#IJ!Mv`RqSNN9eTc$0rcOwczFKfp~1KQZ>~&EJARADo|}8G<;A zLCj#7Hq+Y_NtCix$~&XmBLN8Ex?8xG*lRDdYb22HHS*qbouUBcSt8U7PrP#rMUq8H P7REX_xhkQI9i00QK#h9k literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/LsRCommand.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/command/LsRCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..1d05617a68ec87c80af4678508fef71a6cd2991d GIT binary patch literal 1108 zcma)5TTc@~6#fovSzQ)ei{cFx6tykbiK5Y@hL@@dp<*JY#>ee;3PZNL$?R;cKg$2*9F#p&FiWT%_!D1*ezYgv4-RBt z2(zzLq|7Fv)M)lyT);&Ku7^2zgpH9FY2XW$8WDseEhj1r1#!a}lxr+Hr7+@S+HiXS>*oUHj1$UT&P%BF zR3vxO@j&X2mOw(i7YBaW_qDQqepoj9Dj_^6q_Uv04#APxWO3w|#XoV%ATlX-7R{9K z{PgtyA7n1U-HlTn$hXS&S3Q}#wp}B_+>T7lJ83!K9=)w7lDZrENg~;G^1s0fmUsyX zcX%VM=0#+=%${IPtShY}(6{V*g{8d)JlxA<_5k;>${yhX9(_S+?-eMiiT|Z`2QT(Q$4eYmY00#xymz`Mo8srYmOmBRjKt62Y z2#ykmCmCKgSF8utz+=I{@h$YusMrrZ6DM)Xz-bF-&?hjkE&ff%0!Az=QLsWjmU90S zc#ZS~TMa~E2fP(SCX+$r1Wx|0ks`D0Il=ANtCnS`CRSa!tXb6D4pr932?OMFW>CT*egvds{ZQ zdJ|}UP4~2(&HaU>r1-B{xV{lpR8=Mlx?o2H`nGkJP-wF0ZW$P}a2t07b~kXz?(ige z+NGjeUj8Vhdb$kU6*%9_U($MRR4zN=f<2=gHC{U#xF;~QBdxjy`)!yK%*4bn-*g;XayFtOvVIFUu#~>|ClO;{#llq;$+b+ z*xbbCAgC3zfS}9M4cTs1(!`i@)vCbde~0(?p-1gb=E8k7=`7dTGH0S{?8OOOa(MiMa(80@|$@j=}->1)7m|n-B7JS9AHJqR0gn=RhI&(Y x%xLqQr(x<%;|cGCTn|T|o??dn#%QIc@r?3Lq_Qszoc)0=gKa7BoR2M-{RO|Y+_V4y literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/model/ExecutionContext.class b/2A/Java/tp/tp4-fichier/out/production/tp4-fichier/fr/uca/iut/clfreville2/shell/model/ExecutionContext.class new file mode 100644 index 0000000000000000000000000000000000000000..a41a897a81dedda1371f1a0af4098020b984dab2 GIT binary patch literal 2908 zcmds2-E!MR6#h1`Eyqp?hj1}GjOHY8(Xa`nUxgU zm*7dbpfh-w$psI<3=hGJbT})?vEtaS+e{H{&&@97lXis>}5p{;trfHjAg<-N-+MhxiQwlOF&Ov3keke4*W@x7GX*KIm z@FUZ*_%+RKa?8?MPMurY?dQDad!}P=Ikv~2dkj-;LwKeAlrH|WZ&(!8{kO9gWBcgfDb+(S z{YXOCH5<0!`GROJ_vLFd28jZ!=nVf1_dh@|LsNTlx2KNR-|f@En*;h3QQ9Z9ghiUE znl^vvw+^`2lTu^IRh^n)?Hj_B|D(f%*EFdJH-@?%B^ieK(>7nUyLM+EaIfjq=}R+O z+~b0L{QLh&^gt=e?u2i9W{YcK4kHNlg@djYhL`a&nD&wLjBDY=dxl-NxVv0+oM(Pp zkCi0q7qOEFxJQ!T=59@xZJG#i$d+ZeZu}s!@zYr&aqp-4aHNDZNIiv<8K={r(!*&Z z7n&BjoDee%3O&>GWa-J%v%sM4*ftjd8SX0hj^Ro#TO*=Zu*-09^i?WTm?~`0xSF8u zoG8nl@x=gec0BNff#Cdj;3epk4_Ui-%nRdyLj`Y=g1!t2 zRl!%Z7D+YX7ZB<{RDY=b)5`yvZqHHJ-$0?S=N|6kTU7A?5AlfJWa!OfJi#6o{{zaH B%CZ0e literal 0 HcmV?d00001 diff --git a/2A/Java/tp/tp4-fichier/shell.sh b/2A/Java/tp/tp4-fichier/shell.sh new file mode 100644 index 0000000..14649bf --- /dev/null +++ b/2A/Java/tp/tp4-fichier/shell.sh @@ -0,0 +1,2 @@ +lsR +stat courses/algo2 \ No newline at end of file diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/io/Dump.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/io/Dump.java new file mode 100644 index 0000000..9e42e79 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/io/Dump.java @@ -0,0 +1,73 @@ +package fr.uca.iut.clfreville2.sgf.io; + +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.File; +import fr.uca.iut.clfreville2.sgf.model.Inode; +import fr.uca.iut.clfreville2.sgf.visitor.InodeVisitor; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class Dump { + + private final Inode node; + private final Path path; + + public Dump(Inode node, Path path) { + this.node = node; + this.path = path; + } + + public Dump(Inode node) { + this(node, Path.of(System.getProperty("user.home"))); + } + + public void dump() throws IOException { + Visitor visitor = new Visitor(this.path); + this.node.visit(visitor); + if (visitor.throwable != null) { + throw visitor.throwable; + } + } + + private static class Visitor implements InodeVisitor { + + private Path current; + private IOException throwable; + + public Visitor(Path current) { + this.current = current; + } + + @Override + public void visitFile(File file) { + try (FileOutputStream stream = new FileOutputStream(current.resolve(file.name()).toFile())) { + for (byte c : file.content()) { + stream.write(c); + } + } catch (IOException e) { + this.throwable = e; + } + } + + @Override + public void visitDirectory(Directory directory) { + try { + Path previous = this.current; + this.current = this.current.resolve(directory.name()); + Files.createDirectory(this.current); + for (Inode child : directory) { + child.visit(this); + if (this.throwable != null) { + break; + } + } + this.current = previous; + } catch (IOException e) { + this.throwable = e; + } + } + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.java new file mode 100644 index 0000000..59054d3 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/ConsoleStream.java @@ -0,0 +1,30 @@ +package fr.uca.iut.clfreville2.sgf.model; + +import java.io.PrintStream; + +public class ConsoleStream implements WritableStream { + + private final PrintStream stream; + + public ConsoleStream(PrintStream stream) { + this.stream = stream; + } + + public static ConsoleStream stdout() { + return new ConsoleStream(System.out); + } + + public static ConsoleStream stderr() { + return new ConsoleStream(System.err); + } + + @Override + public void write(char c) { + stream.print(c); + } + + @Override + public void write(String str) { + stream.print(str); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Directory.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Directory.java new file mode 100644 index 0000000..8a97bc6 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Directory.java @@ -0,0 +1,48 @@ +package fr.uca.iut.clfreville2.sgf.model; + +import fr.uca.iut.clfreville2.sgf.visitor.InodeVisitor; + +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +public class Directory extends Inode implements Iterable { + + private static final int DEFAULT_PERMISSIONS = 755; + + private final Map children = new TreeMap<>(); + + public Directory(String filename) { + super(filename, DEFAULT_PERMISSIONS); + } + + public Inode get(String filename) { + return children.get(filename); + } + + public void add(Inode node) { + if (children.putIfAbsent(node.name(), node) != null) { + throw new IllegalArgumentException("This directory already contains the file " + node.name()); + } + } + + @Override + public void visit(InodeVisitor visitor) { + visitor.visitDirectory(this); + } + + @Override + public int size() { + return children.size() + 1; + } + + @Override + public Iterator iterator() { + return children.values().iterator(); + } + + @Override + public String toString() { + return "Directory " + name() + " (" + Integer.toOctalString(permissions()) + ") created on " + creationDate(); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/File.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/File.java new file mode 100644 index 0000000..41c30bf --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/File.java @@ -0,0 +1,53 @@ +package fr.uca.iut.clfreville2.sgf.model; + +import fr.uca.iut.clfreville2.sgf.visitor.InodeVisitor; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class File extends Inode implements WritableStream { + + private static final int DEFAULT_PERMISSIONS = 644; + + private final List content = new ArrayList<>(); + + public File(String filename) { + super(filename, DEFAULT_PERMISSIONS); + } + + public List content() { + return Collections.unmodifiableList(this.content); + } + + public void clear() { + content.clear(); + } + + @Override + public void write(char c) { + content.add((byte) c); + } + + @Override + public void write(String str) { + for (char c : str.toCharArray()) { + content.add((byte) c); + } + } + + @Override + public void visit(InodeVisitor visitor) { + visitor.visitFile(this); + } + + @Override + public int size() { + return content.size(); + } + + @Override + public String toString() { + return "TextFile " + name() + " (" + Integer.toOctalString(permissions()) + ") created on " + creationDate(); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Inode.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Inode.java new file mode 100644 index 0000000..608ad4e --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Inode.java @@ -0,0 +1,59 @@ +package fr.uca.iut.clfreville2.sgf.model; + +import fr.uca.iut.clfreville2.sgf.visitor.InodeVisitor; + +import java.time.LocalDateTime; + +public abstract class Inode implements Permissible { + + private String name; + private int permissions; + private LocalDateTime creationDate; + private LocalDateTime modificationDate; + private LocalDateTime accessDate; + + public Inode(String name, int permissions) { + this.name = name; + this.permissions = permissions; + this.creationDate = LocalDateTime.now(); + this.modificationDate = LocalDateTime.now(); + this.accessDate = LocalDateTime.now(); + } + + public abstract void visit(InodeVisitor visitor); + + public abstract int size(); + + public LocalDateTime creationDate() { + return this.creationDate; + } + + public LocalDateTime modificationDate() { + return this.modificationDate; + } + + public void setModificationDate(LocalDateTime modificationDate) { + this.modificationDate = modificationDate; + } + + public LocalDateTime accessDate() { + return this.accessDate; + } + + public void setAccessDate(LocalDateTime accessDate) { + this.accessDate = accessDate; + } + + public String name() { + return name; + } + + @Override + public int permissions() { + return this.permissions; + } + + public void setPermissions(int permissions) { + this.permissions = permissions; + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Partition.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Partition.java new file mode 100644 index 0000000..1cfbffc --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Partition.java @@ -0,0 +1,19 @@ +package fr.uca.iut.clfreville2.sgf.model; + +public record Partition(Inode root) { + public Inode resolve(Directory cwd, String s) { + String[] parts = s.split("/"); + Inode dest = cwd; + for (String part : parts) { + if (dest instanceof Directory dir) { + dest = dir.get(part); + if (dest == null) { + throw new IllegalArgumentException("Inode inconnu !"); + } + } else { + throw new IllegalArgumentException("N'est pas un dossier !"); + } + } + return dest; + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissible.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissible.java new file mode 100644 index 0000000..472e687 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissible.java @@ -0,0 +1,6 @@ +package fr.uca.iut.clfreville2.sgf.model; + +public interface Permissible { + + int permissions(); +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissions.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissions.java new file mode 100644 index 0000000..5ad34bd --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/Permissions.java @@ -0,0 +1,14 @@ +package fr.uca.iut.clfreville2.sgf.model; + +public final class Permissions { + + private Permissions() {} + + public static final int READ = 1 << 2; + public static final int WRITE = 1 << 1; + public static final int EXECUTE = 1 << 0; + + public static final int USER_SHIFT = 6; + public static final int GROUP_SHIFT = 3; + public static final int OTHERS_SHIFT = 0; +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/WritableStream.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/WritableStream.java new file mode 100644 index 0000000..0f57ded --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/model/WritableStream.java @@ -0,0 +1,8 @@ +package fr.uca.iut.clfreville2.sgf.model; + +public interface WritableStream { + + void write(char c); + + void write(String str); +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/visitor/InodeVisitor.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/visitor/InodeVisitor.java new file mode 100644 index 0000000..cb8b917 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/sgf/visitor/InodeVisitor.java @@ -0,0 +1,11 @@ +package fr.uca.iut.clfreville2.sgf.visitor; + +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.File; + +public interface InodeVisitor { + + void visitFile(File file); + + void visitDirectory(Directory directory); +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/CommandInput.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/CommandInput.java new file mode 100644 index 0000000..dec617f --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/CommandInput.java @@ -0,0 +1,6 @@ +package fr.uca.iut.clfreville2.shell; + +public interface CommandInput { + + String ask(); +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/FileCommandInput.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/FileCommandInput.java new file mode 100644 index 0000000..54dab79 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/FileCommandInput.java @@ -0,0 +1,24 @@ +package fr.uca.iut.clfreville2.shell; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Deque; +import java.util.LinkedList; + +public class FileCommandInput implements CommandInput { + + private final Deque commands; + + public FileCommandInput(Path path) throws IOException { + this.commands = new LinkedList<>(Files.readAllLines(path)); + } + + @Override + public String ask() { + if (this.commands.isEmpty()) { + return null; + } + return this.commands.pollFirst(); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Main.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Main.java new file mode 100644 index 0000000..77b6375 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Main.java @@ -0,0 +1,33 @@ +package fr.uca.iut.clfreville2.shell; + +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.File; +import fr.uca.iut.clfreville2.sgf.model.Partition; +import fr.uca.iut.clfreville2.shell.command.StatCommand; +import fr.uca.iut.clfreville2.shell.command.DumpCommand; +import fr.uca.iut.clfreville2.shell.command.LsRCommand; + +import java.io.IOException; +import java.nio.file.Path; + +public final class Main { + + public static void main(String[] args) throws IOException { + Directory root = new Directory("root"); + Directory courses = new Directory("courses"); + Directory algo = new Directory("algo2"); + algo.add(new File("list.c")); + algo.add(new File("stack.c")); + root.add(new File("Matrix.txt")); + root.add(courses); + courses.add(algo); + courses.add(new Directory("java")); + Partition p = new Partition(root); + + Shell shell = new Shell(p, root, new FileCommandInput(Path.of("shell.sh"))); + shell.register("lsR", new LsRCommand()); + shell.register("dump", new DumpCommand()); + shell.register("stat", new StatCommand()); + shell.execute(); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Shell.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Shell.java new file mode 100644 index 0000000..7891ccf --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/Shell.java @@ -0,0 +1,49 @@ +package fr.uca.iut.clfreville2.shell; + +import fr.uca.iut.clfreville2.sgf.model.ConsoleStream; +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.Partition; +import fr.uca.iut.clfreville2.sgf.model.WritableStream; +import fr.uca.iut.clfreville2.shell.command.Command; +import fr.uca.iut.clfreville2.shell.model.ExecutionContext; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Shell { + + private final Partition partition; + private final Map commands = new HashMap<>(); + private final WritableStream stdout = ConsoleStream.stdout(); + private final WritableStream stderr = ConsoleStream.stderr(); + private Directory currentWorkingDirectory; + private final CommandInput input; + + public Shell(Partition partition, Directory currentWorkingDirectory, CommandInput input) { + this.partition = partition; + this.currentWorkingDirectory = currentWorkingDirectory; + this.input = input; + } + + public void register(String name, Command command) { + this.commands.put(name, command); + } + + public void execute(String rawCommand) { + List args = List.of(rawCommand.split(" ")); + Command command = this.commands.get(args.get(0)); + if (command == null) { + stderr.write("Commande inconnue!\n"); + } else { + command.execute(new ExecutionContext(this.partition, this.currentWorkingDirectory, this.stdout, this.stderr, args)); + } + } + + public void execute() { + String raw; + while ((raw = input.ask()) != null) { + execute(raw); + } + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/UserCommandInput.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/UserCommandInput.java new file mode 100644 index 0000000..343fbb6 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/UserCommandInput.java @@ -0,0 +1,12 @@ +package fr.uca.iut.clfreville2.shell; + +import java.util.Scanner; + +public class UserCommandInput implements CommandInput { + + private final Scanner scanner = new Scanner(System.in); + + public String ask() { + return this.scanner.nextLine(); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/Command.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/Command.java new file mode 100644 index 0000000..bf6b4e7 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/Command.java @@ -0,0 +1,9 @@ +package fr.uca.iut.clfreville2.shell.command; + +import fr.uca.iut.clfreville2.shell.model.ExecutionContext; + +@FunctionalInterface +public interface Command { + + void execute(ExecutionContext ctx); +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/DumpCommand.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/DumpCommand.java new file mode 100644 index 0000000..43e0f68 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/DumpCommand.java @@ -0,0 +1,18 @@ +package fr.uca.iut.clfreville2.shell.command; + +import fr.uca.iut.clfreville2.sgf.io.Dump; +import fr.uca.iut.clfreville2.shell.model.ExecutionContext; + +import java.io.IOException; + +public class DumpCommand implements Command { + @Override + public void execute(ExecutionContext ctx) { + try { + new Dump(ctx.cwd()).dump(); + ctx.stdout().write("Le fichier a bien été écrit.\n"); + } catch (IOException e) { + ctx.stderr().write("Le fichier n'a pas pu être écrit (" + e.getClass().getSimpleName() + ": " + e.getMessage() + ").\n"); + } + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/LsRCommand.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/LsRCommand.java new file mode 100644 index 0000000..77d371c --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/LsRCommand.java @@ -0,0 +1,53 @@ +package fr.uca.iut.clfreville2.shell.command; + +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.File; +import fr.uca.iut.clfreville2.sgf.model.Inode; +import fr.uca.iut.clfreville2.sgf.model.WritableStream; +import fr.uca.iut.clfreville2.sgf.visitor.InodeVisitor; +import fr.uca.iut.clfreville2.shell.model.ExecutionContext; + +import java.util.Arrays; + +public class LsRCommand implements Command { + + @Override + public void execute(ExecutionContext ctx) { + ctx.cwd().visit(new Visitor(ctx.stdout())); + } + + private static class Visitor implements InodeVisitor { + + private final WritableStream stdout; + private int offset = 0; + + public Visitor(WritableStream stdout) { + this.stdout = stdout; + } + + @Override + public void visitFile(File file) { + shift(); + this.stdout.write(file + "\n"); + } + + @Override + public void visitDirectory(Directory directory) { + shift(); + this.stdout.write("Directory [" + directory.name() + "] content:\n"); + this.offset += 2; + for (Inode child : directory) { + child.visit(this); + } + this.offset -= 2; + shift(); + this.stdout.write("----\n"); + } + + private void shift() { + for (int i = 0; i < this.offset; i++) { + this.stdout.write(' '); + } + } + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/StatCommand.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/StatCommand.java new file mode 100644 index 0000000..1f6f4cc --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/command/StatCommand.java @@ -0,0 +1,22 @@ +package fr.uca.iut.clfreville2.shell.command; + +import fr.uca.iut.clfreville2.sgf.model.Inode; +import fr.uca.iut.clfreville2.shell.model.ExecutionContext; + +public class StatCommand implements Command { + @Override + public void execute(ExecutionContext ctx) { + Inode target; + if (ctx.args().size() < 2) { + target = ctx.cwd(); + } else { + try { + target = ctx.partition().resolve(ctx.cwd(), ctx.args().get(1)); + } catch (IllegalArgumentException e) { + ctx.stderr().write(e.getMessage()); + return; + } + } + ctx.stdout().write(Integer.toString(target.size())); + } +} diff --git a/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/model/ExecutionContext.java b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/model/ExecutionContext.java new file mode 100644 index 0000000..7f9ce10 --- /dev/null +++ b/2A/Java/tp/tp4-fichier/src/fr/uca/iut/clfreville2/shell/model/ExecutionContext.java @@ -0,0 +1,10 @@ +package fr.uca.iut.clfreville2.shell.model; + +import fr.uca.iut.clfreville2.sgf.model.Directory; +import fr.uca.iut.clfreville2.sgf.model.Partition; +import fr.uca.iut.clfreville2.sgf.model.WritableStream; + +import java.util.List; + +public record ExecutionContext(Partition partition, Directory cwd, WritableStream stdout, WritableStream stderr, List args) { +} diff --git a/2A/Java/tp/tp4-fichier/tp4-fichier.iml b/2A/Java/tp/tp4-fichier/tp4-fichier.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/2A/Java/tp/tp4-fichier/tp4-fichier.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file