diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644
index 00000000..af9af861
--- /dev/null
+++ b/bin/.gitignore
@@ -0,0 +1,28 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+/build/
+
+mvnw*
+.mvn
diff --git a/bin/README.md b/bin/README.md
new file mode 100644
index 00000000..aae68124
--- /dev/null
+++ b/bin/README.md
@@ -0,0 +1,121 @@
+# TD et TP IPI JVA350 Qualité logicielle
+
+## Pré-requis
+
+- Avoir installé un IDE :
+ - IntelliJ Ultimate, avec votre adresse IPI sur Jetbrains Student à https://www.jetbrains.com/student/
+ - ou Eclipse, à https://www.eclipse.org/downloads/packages/release/2022-09/r/eclipse-ide-java-developers
+- Savoir utiliser Git et les branches. Quelques liens :
+ - https://learngitbranching.js.org/
+ - https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
+- Avoir un compte Github. Voici comment y configurer l'authentification de git par clé SSH :
+ - https://docs.github.com/en/authentication/connecting-to-github-with-ssh
+ - https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
+
+
+## TD
+
+### Plateforme d'intégration continue
+
+- forkez ce repository sur votre compte Github.
+ - Puis après chaque question, committez et pushez vos réponses sur votre repository.
+- sur ce repository, configurez un build automatisé Maven.
+ - indice : Github Actions > Java with Maven > Configure > Start commit
+ - vérifiez d'abord la configuration proposée
+- vérifiez que le workflow correspondant a été committé, et qu'un job de build a été lancé
+- suivre les bonnes pratiques : à chaque commit, si son build casse, ne pas le laisser dans cet état !
+
+### Plateforme d'évaluation de la qualité
+
+- Connectez-vous à https://sonarcloud.io/ en vous identifiant à l'aide de votre compte Github
+- Créez un projet Sonar Cloud pour votre repository forké :
+ - New Project > sélectionnez votre repoisitory forké
+ - Analyse new project > Create a project manually > Créer un token comme indiqué et copiez-le dans un fichier temporaire
+ - Paramétrez l'analyse avec les actions Github comme indiqué
+ - ajoutez dans le workflow Github la configuration de l'analyse Sonar Cloud du code
+- Rédigez **ci-dessous** une courte analyse du premier rapport produit par Sonar (métriques, état général...) :
+
+Le premier rapport Sonar indique...
+
+
+### Tests unitaires
+
+Dans tous les cas :
+- créez la classe de test si nécessaire, et une ou plusieurs méthodes de test
+- les tests doivent couvrir autant de cas que possible
+- vous pouvez corriger le code de la méthode testée si nécessaire
+
+Questions :
+- Tests unitaires simples : Testez unitairement la méthode `SalarieAideADomicile.aDroitADesCongesPayes()` (pensez aux cas aux limites).
+- Tests paramétrés : Testez par une méthode de test paramétrée la méthode `SalarieAideADomicile.calculeJoursDeCongeDecomptesPourPlage()`.
+- Tests avec mocks : Testez de manière mockée (sans dépendance à la base de données) la méthode `SalarieAideADomicileService.clotureMois()`.
+
+### Tests d'intégration
+
+- Tests de repository : Testez la méthode `SalarieAideADomicileRepository.findByNom()`.
+- Tests d'intégration de service : Créez un test d'intégration d'un exemple d'usage typique de la méthode `SalarieAideADomicileService.clotureMois()`.
+
+### Tests d'acceptation
+
+Cucumber est installé dans le projet : maven exécute dans les tests également les Features cucumber définies dans
+src/test/resources, en prenant comme définition de leurs Steps celles trouvées dans des méthodes annotées (suprise !)
+@Given, @When, @Then. Tout cela grâce aux bonnes dépendances Maven dans le pom.xml, et la bonne extension Junit
+configurée dans la classe RunCucumberTest, fournies par l'exécution de l'archetype Maven comme indiqué dans le
+tutorial officiel à https://cucumber.io/docs/guides/10-minute-tutorial/ .
+
+Regarder l'exemple qui fonctionne dans la classe StepDefinitions et le fichier de Feature is_it_friday.feature, repris
+du même tutorial.
+
+S'en inspirer pour écrire la Feature puis développer les Step nécessaires dans StepDefinitions pour écrirer un test
+d'acceptation validant la fonctionnalité de clôture de mois d'un salarié aide à domicile.
+
+### Maintenabilité
+
+- conventions de codage : faites les respecter, améliorez la lisibilité du code
+- journalisation : rajoutez du logging aux endroits les plus pertinents. Changez la configuration pour que les messages de log aillent en plus dans un nouveau fichier `error.log`
+- documentation : améliorez la documentation du code où c'est nécessaire. Générez localement la JavaDoc en utilisant Maven.
+- Rajoutez en entrée de ce README les badges Sonar des métriques importantes de votre projet, en utilisant l'API web de Sonar : https://sonarcloud.io/web_api/api/project_badges
+
+
+## TP d'évaluation
+
+Une fois le TD fini, réalisez les travaux de l'évaluation dans une branche "evaluation" créée à partir de la branche "master" de votre repository forké.
+
+Dans tous les cas :
+- assurez-vous que le build passe (compilation, tests) et qu'il n'y a aucune alerte Sonar bloquante, critique ou majeur (Code Smells, anomalies, bugs). Vous pouvez corriger le code originel si nécessaire.
+- efforcez-vous d'avoir une couverture de code à 100% sur les méthodes testées plus bas. BONUS : même chose mais avec la couverture de code avec mutation.
+
+### Revue de code et pair programming :
+
+- Si cela vous est permis, vous êtes invités à réaliser travaux de l'évaluation en Pair Programming, en vous associant
+avec un autre étudiant. Dans ce cas, partez du repository forké jugé le plus complet ou mieux noté par Sonar des deux,
+passez-vous le clavier au moins entre 2 questions, et indiquez qui le tenait par l'utilisateur de votre commit.
+- Sinon, une fois le TP d'évaluation fini, créez sur Github une Pull Request de votre branche "evaluation" vers la
+branche "master" et demandez à un autre étudiant de faire la revue de votre code. Les cas échéant, faites les
+corrections demandées.
+
+### TDD
+
+- Faites du TDD pour tester unitairement la méthode `Entreprise.estDansPlage()` : écrire d'abord les tests entièrement (pensez aux cas limites) et seulement ensuite écrivez le code de la méthode. Indiquez dans un commentaire une chose ou deux que vous auriez peut-être fait différemment sans faire de TDD.
+
+### Tests unitaires
+
+- Tester unitairement (de manière paramétrée) la méthode `Entreprise.estJourFerie()` OU BIEN `Entreprise.proportionPondereeDuMois()` et `Entreprise.getPremierJourAnneeDeConges()`. **Attention**, elles contiennent des erreurs, bon débogage ! Améliorez l'ensemble de la qualité de cette méthode, avec l'aide de Sonar.
+- Testez sans dépendance à la base de données la méthode `SalarieAideADomicileService.calculeLimiteEntrepriseCongesPermis()`
+
+### Tests d'intégration
+
+- Tests de repository : Testez la méthode `SalarieAideADomicileRepository.partCongesPrisTotauxAnneeNMoins1()`
+- Tests d'intégration de service : Créez un test d'intégration d'un exemple d'usage typique de la méthode `SalarieAideADomicileService.calculeLimiteEntrepriseCongesPermis()`
+- TODO RM BONUS Ecrire un test d'acceptation Cucumber pour au moins la partie "ancienneté" la fonctionnalité de calcul
+ de limite de congés permis par l'entreprise.
+
+### Maintenabilité
+
+- conventions de codage : pareil, faites les respecter, améliorez la lisibilité du code
+- journalisation : Changez la configuration pour réaliser la rotation des fichiers de logs tous les jours et que chaque
+fichier ne dépasse pas 1 MO.
+- BONUS : Créez une petite documentation statique en utilisant MkDocs.
+- Rédigez **ci-dessous** une courte analyse du rapport produit par Sonar (métriques, évolution, état général...) :
+
+Le rapport Sonar final indique...
diff --git a/bin/pom.xml b/bin/pom.xml
new file mode 100644
index 00000000..d8b48dc2
--- /dev/null
+++ b/bin/pom.xml
@@ -0,0 +1,217 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.5
+
+
+ com.ipi
+ jva350
+ 0.0.1-SNAPSHOT
+ jva350
+ TP qualité logicielle IPI
+
+
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ test
+
+
+ com.thoughtworks.gauge
+ gauge-java
+ 0.9.1
+ test
+
+
+
+
+ org.junit.platform
+ junit-platform-suite
+ test
+
+
+ io.cucumber
+ cucumber-junit-platform-engine
+ 7.5.0
+ test
+
+
+ io.cucumber
+ cucumber-java
+ 7.5.0
+ test
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.8
+
+
+
+ prepare-agent
+
+
+
+ report
+ prepare-package
+
+ report
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.0.0-M3
+
+
+ enforce-maven
+
+ enforce
+
+
+
+
+ 3.5.4
+
+
+
+
+
+
+
+ org.pitest
+ pitest-maven
+ 1.9.9
+
+
+ org.pitest
+ pitest-junit5-plugin
+ 0.16
+
+
+
+
+ com.ipiecoles.java.java350.*
+
+
+ com.ipiecoles.java.java350.*
+
+
+
+
+ com.thoughtworks.gauge.maven
+ gauge-maven-plugin
+ 1.4.3
+
+
+ test
+
+ src/test/resources/specs
+
+
+ execute
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.9.0
+
+
+ 8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.3.1
+
+
+ 1.8
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 3.10.0
+
+
+ org.pitest
+ pitest-maven
+ 1.9.9
+
+
+
+ report
+
+
+
+
+
+
+
+
diff --git a/bin/src/main/java/com/ipi/jva350/Jva350Application.class b/bin/src/main/java/com/ipi/jva350/Jva350Application.class
new file mode 100644
index 00000000..4b1d82ba
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/Jva350Application.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/exception/SalarieException.class b/bin/src/main/java/com/ipi/jva350/exception/SalarieException.class
new file mode 100644
index 00000000..03aff4f4
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/exception/SalarieException.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/model/Entreprise.class b/bin/src/main/java/com/ipi/jva350/model/Entreprise.class
new file mode 100644
index 00000000..a8df33a1
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/model/Entreprise.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/model/LinkedHashSetStringConverter.class b/bin/src/main/java/com/ipi/jva350/model/LinkedHashSetStringConverter.class
new file mode 100644
index 00000000..0ea63175
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/model/LinkedHashSetStringConverter.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.class b/bin/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.class
new file mode 100644
index 00000000..8b49bfe5
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/repository/SalarieAideADomicileRepository.class b/bin/src/main/java/com/ipi/jva350/repository/SalarieAideADomicileRepository.class
new file mode 100644
index 00000000..74349466
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/repository/SalarieAideADomicileRepository.class differ
diff --git a/bin/src/main/java/com/ipi/jva350/service/SalarieAideADomicileService.class b/bin/src/main/java/com/ipi/jva350/service/SalarieAideADomicileService.class
new file mode 100644
index 00000000..38ddeaed
Binary files /dev/null and b/bin/src/main/java/com/ipi/jva350/service/SalarieAideADomicileService.class differ
diff --git a/bin/src/test/java/com/ipi/jva350/IsItFriday.class b/bin/src/test/java/com/ipi/jva350/IsItFriday.class
new file mode 100644
index 00000000..25f94d30
Binary files /dev/null and b/bin/src/test/java/com/ipi/jva350/IsItFriday.class differ
diff --git a/bin/src/test/java/com/ipi/jva350/RunCucumberTest.class b/bin/src/test/java/com/ipi/jva350/RunCucumberTest.class
new file mode 100644
index 00000000..1f2d686c
Binary files /dev/null and b/bin/src/test/java/com/ipi/jva350/RunCucumberTest.class differ
diff --git a/bin/src/test/java/com/ipi/jva350/StepDefinitions.class b/bin/src/test/java/com/ipi/jva350/StepDefinitions.class
new file mode 100644
index 00000000..ded345d2
Binary files /dev/null and b/bin/src/test/java/com/ipi/jva350/StepDefinitions.class differ
diff --git a/bin/src/test/resources/com/ipi/jva350/is_it_friday.feature b/bin/src/test/resources/com/ipi/jva350/is_it_friday.feature
new file mode 100644
index 00000000..3786d9f5
--- /dev/null
+++ b/bin/src/test/resources/com/ipi/jva350/is_it_friday.feature
@@ -0,0 +1,7 @@
+Feature: Is it Friday yet?
+ Everybody wants to know when it's Friday
+
+ Scenario: Sunday isn't Friday
+ Given today is Sunday
+ When I ask whether it's Friday yet
+ Then I should be told "Nope"
\ No newline at end of file
diff --git a/example.txt b/example.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.java b/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.java
index 90fdf2c1..a4444906 100644
--- a/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.java
+++ b/src/main/java/com/ipi/jva350/model/SalarieAideADomicile.java
@@ -20,13 +20,14 @@ public class SalarieAideADomicile {
private String nom;
- public static List joursHabituellementTravailles = new ArrayList() {{
- add(DayOfWeek.MONDAY);
- add(DayOfWeek.TUESDAY);
- add(DayOfWeek.WEDNESDAY);
- add(DayOfWeek.THURSDAY);
- add(DayOfWeek.FRIDAY);
- }};
+ public static List joursHabituellementTravailles = new ArrayList();
+ static {
+ joursHabituellementTravailles.add(DayOfWeek.MONDAY);
+ joursHabituellementTravailles.add(DayOfWeek.TUESDAY);
+ joursHabituellementTravailles.add(DayOfWeek.WEDNESDAY);
+ joursHabituellementTravailles.add(DayOfWeek.THURSDAY);
+ joursHabituellementTravailles.add(DayOfWeek.FRIDAY);
+ };
private LocalDate moisEnCours;
private LocalDate moisDebutContrat;
@@ -40,7 +41,7 @@ public class SalarieAideADomicile {
private double joursTravaillesAnneeNMoins1= 0;
private double congesPayesAcquisAnneeNMoins1= 0;
private double congesPayesPrisAnneeNMoins1= 0;
-
+ //commentaire
public SalarieAideADomicile() {
}