add systeme tp6 and update java

master
Antoine PEREDERII 1 year ago
parent 42ba4bd8d9
commit 34a1e4a5d6

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/2_tp/2_tp.iml" filepath="$PROJECT_DIR$/2_tp/2_tp.iml" />
<module fileurl="file://$PROJECT_DIR$/3_tp/3_tp.iml" filepath="$PROJECT_DIR$/3_tp/3_tp.iml" />
<module fileurl="file://$PROJECT_DIR$/4_tp/4_tp.iml" filepath="$PROJECT_DIR$/4_tp/4_tp.iml" />
<module fileurl="file://$PROJECT_DIR$/1_tp/TP1/TP1.iml" filepath="$PROJECT_DIR$/1_tp/TP1/TP1.iml" />
<module fileurl="file://$PROJECT_DIR$/1_tp/my/my.iml" filepath="$PROJECT_DIR$/1_tp/my/my.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/tp.iml" filepath="$PROJECT_DIR$/.idea/tp.iml" />
</modules>
</component>
</project>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
</component>
</project>

@ -3,7 +3,7 @@
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/TP1/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_18_PREVIEW" inherit-compiler-output="true">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/TP2/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_18_PREVIEW" inherit-compiler-output="true">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/TP3/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />

Binary file not shown.

@ -0,0 +1 @@
Voiture{nom='monNom', plaque='maPlaque'}
1 Voiture{nom='monNom' plaque='maPlaque'}

@ -1,4 +1,43 @@
package data;
import models.Vehicule;
import models.Voiture;
import java.io.*;
public class ExportCSV {
public String csvReader() {
try (BufferedReader in = new BufferedReader(
new FileReader("donnees.csv"))) {
String s;
StringBuilder sb = new StringBuilder();
while ((s = in.readLine()) != null) {
sb.append(s);
sb.append("\n");
// Découper la ligne en utilisant le point-virgule comme séparateur
String[] elements = s.split(";");
// Faire quelque chose avec les éléments découpés
for (String element : elements) {
System.out.println("Élément : " + element);
}
// Lire la ligne puis la decouper au points virgules
}
return sb.toString();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void csvWriter(Vehicule monVehicule) {
try (BufferedWriter out = new BufferedWriter(
new FileWriter("donnees.csv"))) {
out.append(monVehicule.getNom());
out.append("; ");
out.append(monVehicule.getPlaque());
out.append("\n");
} catch (IOException e) {
// Gestion erreur
}
}
}

@ -1,31 +1,27 @@
package data;
import models.Vehicule;
import models.VehiculeTheque;
import models.Voiture;
import java.io.*;
//public class Serialiser {
// try (
// BufferedReader in = new BufferedReader(
// new FileReader("donnees.txt"))) {
// String s;
// StringBuilder sb = new StringBuilder();
// while ((s = in.readLine()) != null) {
// sb.append(s);
// sb.append("\n");
// }
// System.out.println(sb);
// } catch (IOException e) {
//// Gestion erreur
// }public record Personne (String nom, int age) implements Serializable {}
//// dans le code
// VehiculeTheque vehiculeTheque = new VehiculeTheque();
//
// try (
// ObjectOutputStream out = new ObjectOutputStream(
// new FileOutputStream("data.ser"))) {
// out.writeObject(vehiculeTheque);
// } catch (IOException e;) {
// // Gestion erreur
// }
//}
public class Serialiser {
public void serialiserWriteBin(){
Voiture john = new Voiture("hello", "maPlaque");
try (ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("data.ser"))) {
out.writeObject(john);
} catch (IOException e) {
// Gestion erreur
}
}
public Vehicule serialiserReadBin() {
try (ObjectInputStream in = new ObjectInputStream(
new FileInputStream("data.ser"))) {
return (Vehicule) in.readObject();
} catch (IOException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}

@ -4,14 +4,18 @@ import models.Vehicule;
import models.VehiculeTheque;
import models.Voiture;
import java.util.ArrayList;
import java.util.List;
public class Stub {
public static VehiculeTheque Stub(){
VehiculeTheque vehiculeTheque = new VehiculeTheque();
vehiculeTheque.ajouterVehicule(new Voiture("Merco", "ABC-123"));
vehiculeTheque.ajouterVehicule(new Voiture("Audi", "XYZ-987"));
vehiculeTheque.ajouterVehicule(new Voiture("Renault", "HIJ-456"));
public List<Vehicule> vehiculeList = new ArrayList<>();
public Stub(){
vehiculeList.add(new Voiture("Merco", "ABC-123"));
vehiculeList.add(new Voiture("Audi", "XYZ-987"));
vehiculeList.add(new Voiture("Renault", "HIJ-456"));
}
// Retourne la collection de test
return vehiculeTheque;
public List<Vehicule> getVehiculeList() {
return this.vehiculeList;
}
}

@ -1,20 +1,49 @@
package main;
import data.ExportCSV;
import data.Serialiser;
import data.Stub;
import models.Vehicule;
import models.VehiculeTheque;
import models.Voiture;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void testVehiculeTheque(){
VehiculeTheque vehiculeTheque = new VehiculeTheque();
Vehicule v1 = new Voiture("v1", "111-AB-222");
Vehicule v2 = new Voiture("v2", "333-GH-865");
vehiculeTheque.ajouterVehicule(v1);
vehiculeTheque.ajouterVehicule(v2);
vehiculeTheque.getLesVehicules().add(v1);
vehiculeTheque.getLesVehicules().add(v2);
System.out.println(vehiculeTheque.getLesVehicules().toString());
}
public static void testStub() {
Stub monStub = new Stub();
List<Vehicule> maListe = monStub.getVehiculeList();
System.out.println(maListe);
}
public static void testSerialiser() {
Serialiser monSerialiser = new Serialiser();
Vehicule monVehicule;
monSerialiser.serialiserWriteBin();
monVehicule = monSerialiser.serialiserReadBin();
System.out.println(monVehicule);
}
public static void testCSV() {
ExportCSV moncsv = new ExportCSV();
Voiture maVoiture = new Voiture("monNom", "maPlaque");
moncsv.csvWriter(maVoiture);
System.out.println(moncsv.csvReader());
}
public static void main(String[] args){
testVehiculeTheque();
// testVehiculeTheque();
// testStub();
// testSerialiser();
testCSV();
}
}

@ -1,9 +1,17 @@
package models;
public abstract class Vehicule {
import data.Serialiser;
import java.io.Serializable;
public abstract class Vehicule implements Serializable {
protected String nom;
protected String plaque;
public abstract String getNom();
public abstract String getPlaque();
@Override
public String toString() {
return "Vehicule{" +

@ -11,10 +11,6 @@ public class VehiculeTheque {
return this.lesVehicules;
}
public void ajouterVehicule(Vehicule v) {
lesVehicules.add(v);
}
@Override
public String toString() {
return "VehiculeTheque{" +

@ -7,11 +7,11 @@ public class Voiture extends Vehicule {
this.plaque = plaqueV;
}
private String getNom() {
public String getNom() {
return this.nom;
}
private String getPlaque() {
public String getPlaque() {
return this.plaque;
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/TP4/TP4/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1 @@
monNom; maPlaque
1 monNom maPlaque

Binary file not shown.

@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" project-jdk-name="18" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/tp1-intro.iml" filepath="$PROJECT_DIR$/tp1-intro.iml" />
</modules>
</component>
</project>

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -1,2 +0,0 @@
Machin Truc
Bidule Machin

@ -1,21 +0,0 @@
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();
}
}

@ -1,21 +0,0 @@
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);
}
}

@ -1,80 +0,0 @@
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);
}
}

@ -1,56 +0,0 @@
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.
* <p>
* 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.
* <p>
* 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);
}

@ -1,50 +0,0 @@
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);
}
}

@ -1,10 +0,0 @@
package fr.uca.iut.clfreville2.tp1.io;
import fr.uca.iut.clfreville2.tp1.cli.Action;
public interface Saisisseur {
String demandeMot();
Action demanderAction();
}

@ -1,42 +0,0 @@
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;
};
}
}

@ -1,9 +0,0 @@
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();
}
}

@ -1,36 +0,0 @@
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<Patient> {
private final List<Patient> 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<Patient> getPatients() {
return Collections.unmodifiableList(patients);
}
@Override
public Iterator<Patient> iterator() {
return getPatients().iterator();
}
}

@ -1,46 +0,0 @@
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);
}
}
}

@ -1,11 +0,0 @@
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);
}

@ -1,11 +0,0 @@
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
}
}

@ -1,7 +0,0 @@
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 {
}

@ -1,12 +0,0 @@
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");
}
}

@ -1,11 +0,0 @@
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);
}

@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/tp2-zoo.iml" filepath="$PROJECT_DIR$/tp2-zoo.iml" />
</modules>
</component>
</project>

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -1 +0,0 @@
ours bidule 9 oiseau machin SUD 5 --end--

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save