From b2fffa9f9ff4751fffab7dc0f55c4b69bf2e7f5f Mon Sep 17 00:00:00 2001 From: Olivier PARPAILLON Date: Wed, 9 Jul 2025 10:00:21 +0200 Subject: [PATCH] Create Service, Entity and Repository for Client and Location. Client add test to BDD done --- .../java/fr/eni/demo/bll/ClientService.java | 25 ++++++++++++++ .../fr/eni/demo/bll/EmployeServiceImpl.java | 4 +-- .../java/fr/eni/demo/bll/LocationService.java | 25 ++++++++++++++ .../fr/eni/demo/bll/TestEmployeService.java | 4 --- src/main/java/fr/eni/demo/bo/Client.java | 33 +++++++++++++++++++ src/main/java/fr/eni/demo/bo/Location.java | 31 +++++++++++++++++ .../fr/eni/demo/dal/ClientRepository.java | 9 +++++ ...EmployeDAO.java => EmployeRepository.java} | 2 +- ...AOImpl.java => EmployeRepositoryImpl.java} | 2 +- .../fr/eni/demo/dal/LocationRepository.java | 9 +++++ .../fr/eni/demo/DemoApplicationTests.java | 25 ++++++++++++-- 11 files changed, 158 insertions(+), 11 deletions(-) create mode 100644 src/main/java/fr/eni/demo/bll/ClientService.java create mode 100644 src/main/java/fr/eni/demo/bll/LocationService.java delete mode 100644 src/main/java/fr/eni/demo/bll/TestEmployeService.java create mode 100644 src/main/java/fr/eni/demo/bo/Client.java create mode 100644 src/main/java/fr/eni/demo/bo/Location.java create mode 100644 src/main/java/fr/eni/demo/dal/ClientRepository.java rename src/main/java/fr/eni/demo/dal/{EmployeDAO.java => EmployeRepository.java} (89%) rename src/main/java/fr/eni/demo/dal/{EmployeDAOImpl.java => EmployeRepositoryImpl.java} (94%) create mode 100644 src/main/java/fr/eni/demo/dal/LocationRepository.java diff --git a/src/main/java/fr/eni/demo/bll/ClientService.java b/src/main/java/fr/eni/demo/bll/ClientService.java new file mode 100644 index 0000000..25d0d82 --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/ClientService.java @@ -0,0 +1,25 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.Client; +import fr.eni.demo.dal.ClientRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ClientService { + + @Autowired + private ClientRepository clientRepository; + + public void add(Client client) { + if (client.getPrenom() == null) { + Client clientTest = new Client(); + clientTest.setPrenom("Olivier"); + clientTest.setNom("Parpaillon"); + clientTest.setEmail("olivier@test.fr"); + clientRepository.save(clientTest); + } else { + clientRepository.save(client); + } + } +} diff --git a/src/main/java/fr/eni/demo/bll/EmployeServiceImpl.java b/src/main/java/fr/eni/demo/bll/EmployeServiceImpl.java index 4f3c5c6..6eaa086 100644 --- a/src/main/java/fr/eni/demo/bll/EmployeServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/EmployeServiceImpl.java @@ -3,14 +3,14 @@ package fr.eni.demo.bll; import java.util.List; import org.springframework.stereotype.Service; import fr.eni.demo.bo.Employe; -import fr.eni.demo.dal.EmployeDAO; +import fr.eni.demo.dal.EmployeRepository; import lombok.AllArgsConstructor; //Permet de faire injecter la couche DAL associée @AllArgsConstructor @Service public class EmployeServiceImpl implements EmployeService { - private EmployeDAO employeRepository; + private EmployeRepository employeRepository; @Override public void ajouter(Employe employe) { diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java new file mode 100644 index 0000000..2d91aca --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -0,0 +1,25 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.Location; +import fr.eni.demo.dal.LocationRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class LocationService { + + @Autowired + LocationRepository locationRepository; + + public void add(Location location) { + if (location.getRue() == null || location.getCodePostal() == null || location.getVille() == null) { + Location locationTest = new Location(); + locationTest.setRue("18 Rue de la Paix"); + locationTest.setCodePostal("75000"); + locationTest.setVille("Paris"); + locationRepository.save(locationTest); + } else { + locationRepository.save(location); + } + } +} diff --git a/src/main/java/fr/eni/demo/bll/TestEmployeService.java b/src/main/java/fr/eni/demo/bll/TestEmployeService.java deleted file mode 100644 index c1d8b64..0000000 --- a/src/main/java/fr/eni/demo/bll/TestEmployeService.java +++ /dev/null @@ -1,4 +0,0 @@ -package fr.eni.demo.bll; - -class TestEmployeService { -} diff --git a/src/main/java/fr/eni/demo/bo/Client.java b/src/main/java/fr/eni/demo/bo/Client.java new file mode 100644 index 0000000..e49b930 --- /dev/null +++ b/src/main/java/fr/eni/demo/bo/Client.java @@ -0,0 +1,33 @@ +package fr.eni.demo.bo; + +import jakarta.persistence.*; +import lombok.*; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +@Builder + +@Entity +@Table(name="CLIENTS") +public class Client { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "CLIENT_ID") + private Integer id; + + @Column(name= "LAST_NAME", nullable = false, length = 90) + private String nom; + + @Column(name= "FIRST_NAME", nullable = false, length = 150) + private String prenom; + + @Column(nullable = false, unique = true) + private String email; + + @OneToOne + @JoinColumn(name = "LOCATION_ID") + private Location location; +} diff --git a/src/main/java/fr/eni/demo/bo/Location.java b/src/main/java/fr/eni/demo/bo/Location.java new file mode 100644 index 0000000..f810118 --- /dev/null +++ b/src/main/java/fr/eni/demo/bo/Location.java @@ -0,0 +1,31 @@ +package fr.eni.demo.bo; + +import jakarta.persistence.*; +import lombok.*; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@ToString +@Builder + +@Entity +@Table(name="LOCATIONS") +public class Location { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "LOCATION_ID") + private Integer id; + + @Column(name = "STREET",nullable = false, length = 250) + private String rue; + + @Column(name = "POSTAL_CODE",nullable = false, length = 5) + private String codePostal; + + @Column(name = "CITY",nullable = false, length = 150) + private String ville; + +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/dal/ClientRepository.java b/src/main/java/fr/eni/demo/dal/ClientRepository.java new file mode 100644 index 0000000..0a72efa --- /dev/null +++ b/src/main/java/fr/eni/demo/dal/ClientRepository.java @@ -0,0 +1,9 @@ +package fr.eni.demo.dal; + +import fr.eni.demo.bo.Client; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ClientRepository extends JpaRepository { +} diff --git a/src/main/java/fr/eni/demo/dal/EmployeDAO.java b/src/main/java/fr/eni/demo/dal/EmployeRepository.java similarity index 89% rename from src/main/java/fr/eni/demo/dal/EmployeDAO.java rename to src/main/java/fr/eni/demo/dal/EmployeRepository.java index 30c2d7a..0111330 100644 --- a/src/main/java/fr/eni/demo/dal/EmployeDAO.java +++ b/src/main/java/fr/eni/demo/dal/EmployeRepository.java @@ -3,7 +3,7 @@ package fr.eni.demo.dal; import java.util.List; import fr.eni.demo.bo.Employe; -public interface EmployeDAO { +public interface EmployeRepository { void create(Employe employe); Employe read(Integer id); diff --git a/src/main/java/fr/eni/demo/dal/EmployeDAOImpl.java b/src/main/java/fr/eni/demo/dal/EmployeRepositoryImpl.java similarity index 94% rename from src/main/java/fr/eni/demo/dal/EmployeDAOImpl.java rename to src/main/java/fr/eni/demo/dal/EmployeRepositoryImpl.java index 3405a23..3cac1f0 100644 --- a/src/main/java/fr/eni/demo/dal/EmployeDAOImpl.java +++ b/src/main/java/fr/eni/demo/dal/EmployeRepositoryImpl.java @@ -6,7 +6,7 @@ import fr.eni.demo.bo.Employe; import org.springframework.stereotype.Repository; @Repository -public class EmployeDAOImpl implements EmployeDAO { +public class EmployeRepositoryImpl implements EmployeRepository { private List employes = new ArrayList<>(); @Override diff --git a/src/main/java/fr/eni/demo/dal/LocationRepository.java b/src/main/java/fr/eni/demo/dal/LocationRepository.java new file mode 100644 index 0000000..d254d19 --- /dev/null +++ b/src/main/java/fr/eni/demo/dal/LocationRepository.java @@ -0,0 +1,9 @@ +package fr.eni.demo.dal; + +import fr.eni.demo.bo.Location; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface LocationRepository extends JpaRepository { +} diff --git a/src/test/java/fr/eni/demo/DemoApplicationTests.java b/src/test/java/fr/eni/demo/DemoApplicationTests.java index 74fd484..67d8620 100644 --- a/src/test/java/fr/eni/demo/DemoApplicationTests.java +++ b/src/test/java/fr/eni/demo/DemoApplicationTests.java @@ -1,13 +1,32 @@ package fr.eni.demo; +import fr.eni.demo.bll.ClientService; +import fr.eni.demo.bll.LocationService; +import fr.eni.demo.bo.Client; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class DemoApplicationTests { - @Test - void contextLoads() { - } + @Autowired + private ClientService clientService; + + @Autowired + private LocationService locationService; + + @Test + @DisplayName("-- Test add Client --") + void testAddClient() { + //Création de l'objet client + Client client = new Client(); + client.setEmail("olivier@test.fr"); + client.setNom("Parpaillon"); + client.setPrenom("Olivier"); + + clientService.add(client); + } }