From 9bb9124617d8339a468b1f72a15cbe9d20f81883 Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 11:02:25 +0200 Subject: [PATCH 1/2] modification ajout clients --- .../java/fr/eni/demo/bll/AdresseService.java | 1 + .../fr/eni/demo/bll/ClientServiceImpl.java | 22 ++++++++++++++++++- src/main/java/fr/eni/demo/bo/Adresse.java | 2 +- .../fr/eni/demo/dal/AdresseRepository.java | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/AdresseService.java b/src/main/java/fr/eni/demo/bll/AdresseService.java index 313dfef..39bc237 100644 --- a/src/main/java/fr/eni/demo/bll/AdresseService.java +++ b/src/main/java/fr/eni/demo/bll/AdresseService.java @@ -6,4 +6,5 @@ public interface AdresseService { Adresse add(Adresse adresse); Adresse findById(Long id); Adresse findAdresseByClientId(Long clientId); + } diff --git a/src/main/java/fr/eni/demo/bll/ClientServiceImpl.java b/src/main/java/fr/eni/demo/bll/ClientServiceImpl.java index 88d6300..35fe26b 100644 --- a/src/main/java/fr/eni/demo/bll/ClientServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/ClientServiceImpl.java @@ -3,9 +3,12 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Adresse; import fr.eni.demo.bo.Client; import fr.eni.demo.bo.Location; +import fr.eni.demo.dal.AdresseRepository; import fr.eni.demo.dal.ClientRepository; import jakarta.persistence.EntityNotFoundException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Example; +import org.springframework.data.domain.ExampleMatcher; import org.springframework.stereotype.Service; import java.util.List; @@ -15,11 +18,14 @@ import java.util.Optional; public class ClientServiceImpl implements ClientService { private ClientRepository clientRepository; + private AdresseRepository adresseRepository; - public ClientServiceImpl(ClientRepository clientRepository) { + public ClientServiceImpl(ClientRepository clientRepository, AdresseRepository adresseRepository) { this.clientRepository = clientRepository; + this.adresseRepository = adresseRepository; } + @Override public void add(Client client) { if (client == null) { @@ -28,9 +34,23 @@ public class ClientServiceImpl implements ClientService { if (client.getAdresse() == null) { throw new IllegalArgumentException("Adresse mandatory"); } + + Adresse adresse = client.getAdresse(); + + ExampleMatcher matcher = ExampleMatcher.matchingAll() + .withIgnoreNullValues() + .withIgnoreCase(); + + Example example = Example.of(adresse, matcher); + + Optional existingAdresse = adresseRepository.findOne(example); + + client.setAdresse(existingAdresse.orElseGet(() -> adresseRepository.save(adresse))); + clientRepository.save(client); } + @Override public Client findById(Long clientId) { return clientRepository.findById(clientId) diff --git a/src/main/java/fr/eni/demo/bo/Adresse.java b/src/main/java/fr/eni/demo/bo/Adresse.java index 4f04486..358b040 100644 --- a/src/main/java/fr/eni/demo/bo/Adresse.java +++ b/src/main/java/fr/eni/demo/bo/Adresse.java @@ -15,7 +15,7 @@ import org.springframework.data.mongodb.core.mapping.Field; public class Adresse { @Id - private Integer id; + private String id; @Field(name = "STREET") private String rue; diff --git a/src/main/java/fr/eni/demo/dal/AdresseRepository.java b/src/main/java/fr/eni/demo/dal/AdresseRepository.java index d43c310..8d1630e 100644 --- a/src/main/java/fr/eni/demo/dal/AdresseRepository.java +++ b/src/main/java/fr/eni/demo/dal/AdresseRepository.java @@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository; @Repository public interface AdresseRepository extends MongoRepository { + } From bb927ff282871eff8f800c0802073f47b52bb94d Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 11:08:27 +0200 Subject: [PATCH 2/2] Correction facture --- src/main/java/fr/eni/demo/bo/Client.java | 4 ++-- src/main/java/fr/eni/demo/bo/Facture.java | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/fr/eni/demo/bo/Client.java b/src/main/java/fr/eni/demo/bo/Client.java index ca94967..935b821 100644 --- a/src/main/java/fr/eni/demo/bo/Client.java +++ b/src/main/java/fr/eni/demo/bo/Client.java @@ -36,7 +36,7 @@ public class Client { @Field(name = "LOCATIONS") private List locations; - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) - @JoinColumn(name = "CLIENT_ID") + @DBRef + @Field(name = "FACTURES") private List factures; } diff --git a/src/main/java/fr/eni/demo/bo/Facture.java b/src/main/java/fr/eni/demo/bo/Facture.java index b91852a..06b53b0 100644 --- a/src/main/java/fr/eni/demo/bo/Facture.java +++ b/src/main/java/fr/eni/demo/bo/Facture.java @@ -1,7 +1,10 @@ package fr.eni.demo.bo; -import jakarta.persistence.*; import lombok.*; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; import java.util.Date; @@ -12,22 +15,19 @@ import java.util.Date; @ToString @Builder -@Entity -@Table(name="Facture") +@Document(collection = "factures") public class Facture { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "FACTURE_ID") - private Long id; + private String id; - @Column(name = "PRICE") + @Field(name = "PRICE") private Double price; - @Column(name = "DATE_PAY") + @Field(name = "DATEPAY") private Date datePay; - @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) - @JoinColumn(name = "CLIENT_ID", nullable = false) + @DBRef + @Field(name = "CLIENTS") private Client client; }