# Guide de Migration UUID - Code Client ## Vue d'ensemble Ce document décrit les changements nécessaires dans le code client (`unionflow-client-quarkus-primefaces-freya`) pour utiliser UUID au lieu de Long. ## Fichiers modifiés ### Services Client (Interfaces REST) #### MembreService.java - ✅ `obtenirParId(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `modifier(@PathParam("id") UUID id, ...)` - Changé de Long vers UUID - ✅ `supprimer(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `activer(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `desactiver(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `suspendre(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `radier(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `listerParAssociation(@PathParam("associationId") UUID associationId)` - Changé de Long vers UUID - ✅ `rechercher(..., @QueryParam("associationId") UUID associationId, ...)` - Changé de Long vers UUID - ✅ `exporterExcel(..., @QueryParam("associationId") UUID associationId, ...)` - Changé de Long vers UUID - ✅ `importerDonnees(..., @FormParam("associationId") UUID associationId)` - Changé de Long vers UUID #### AssociationService.java - ✅ `obtenirParId(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `modifier(@PathParam("id") UUID id, ...)` - Changé de Long vers UUID - ✅ `supprimer(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `activer(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `desactiver(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `suspendre(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `dissoudre(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `compterMembres(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `obtenirPerformance(@PathParam("id") UUID id)` - Changé de Long vers UUID - ✅ `PerformanceAssociationDTO.associationId` - Changé de Long vers UUID ### DTOs Client #### MembreDTO.java - ✅ `private UUID id;` - Changé de Long vers UUID - ✅ `private UUID associationId;` - Changé de Long vers UUID - ✅ Getters et setters mis à jour #### AssociationDTO.java - ✅ `private UUID id;` - Changé de Long vers UUID - ✅ Getters et setters mis à jour ## Fichiers à mettre à jour (Beans JSF) Les Beans JSF suivants utilisent encore `Long` et doivent être mis à jour : ### Beans avec IDs Long dans les classes internes 1. **UserSession.java** - `UserInfo.id` : Long → UUID - `EntiteInfo.id` : Long → UUID 2. **DemandesBean.java** - `DemandeItem.id` : Long → UUID - `Gestionnaire.id` : Long → UUID 3. **UtilisateursBean.java** - `UtilisateurItem.id` : Long → UUID - `OrganisationItem.id` : Long → UUID - Remplacer `setId(1L)`, `setId(2L)`, etc. par `UUID.randomUUID()` 4. **SuperAdminBean.java** - `AlerteItem.id` : Long → UUID - Remplacer `setId(1L)`, `setId(2L)`, etc. par `UUID.randomUUID()` 5. **MembreRechercheBean.java** - `RechercheItem.id` : Long → UUID - `MembreItem.id` : Long → UUID - Remplacer `setId(1L)`, `setId(2L)` par `UUID.randomUUID()` 6. **MembreProfilBean.java** - `ActiviteItem.id` : Long → UUID 7. **EvenementsBean.java** - `EvenementItem.id` : Long → UUID 8. **EntitesGestionBean.java** - `EntiteItem.id` : Long → UUID 9. **DocumentsBean.java** - `DocumentItem.id` : Long → UUID - `CategorieItem.id` : Long → UUID 10. **DemandesAideBean.java** - `DemandeItem.id` : Long → UUID 11. **CotisationsGestionBean.java** - `CotisationItem.id` : Long → UUID - `MembreItem.id` : Long → UUID 12. **CotisationsBean.java** - `CotisationItem.id` : Long → UUID 13. **RapportsBean.java** - `RapportItem.id` : Long → UUID ### Beans avec données mockées - **SouscriptionBean.java** : `souscriptionActive.setId(1L)` → `UUID.randomUUID()` - **FormulaireBean.java** : `starter.setId(1L)`, etc. → `UUID.randomUUID()` - **AdminFormulaireBean.java** : `starter.setId(1L)`, etc. → `UUID.randomUUID()` - **AuthenticationService.java** : Tous les `setId(1L)`, `setId(2L)`, etc. → `UUID.randomUUID()` ## DTOs supplémentaires à vérifier - **SouscriptionDTO.java** : `private Long id;` → `private UUID id;` - **FormulaireDTO.java** : `private Long id;` → `private UUID id;` - **LoginResponse.java** : `UserInfo.id` et `EntiteInfo.id` → UUID ## Notes importantes 1. **Conversion automatique** : JAX-RS/MicroProfile REST Client convertit automatiquement les UUID en String dans les URLs 2. **Validation** : Les UUIDs sont validés automatiquement par JAX-RS 3. **Null safety** : Vérifier que les UUIDs ne sont pas null avant utilisation 4. **Tests** : Mettre à jour tous les tests qui utilisent des IDs Long ## Exemple de migration ### Avant ```java @GET @Path("/{id}") MembreDTO obtenirParId(@PathParam("id") Long id); // Dans un Bean membreService.obtenirParId(1L); ``` ### Après ```java @GET @Path("/{id}") MembreDTO obtenirParId(@PathParam("id") UUID id); // Dans un Bean UUID membreId = UUID.fromString("550e8400-e29b-41d4-a716-446655440000"); membreService.obtenirParId(membreId); ``` ## Prochaines étapes 1. ✅ Mettre à jour les services client (MembreService, AssociationService) 2. ✅ Mettre à jour les DTOs principaux (MembreDTO, AssociationDTO) 3. ⏳ Mettre à jour tous les Beans JSF 4. ⏳ Mettre à jour les DTOs restants 5. ⏳ Mettre à jour les données mockées dans AuthenticationService 6. ⏳ Tester l'application complète ## Support Pour toute question concernant cette migration, contactez l'équipe UnionFlow. **Date de migration:** 16 janvier 2025 **Version:** 2.0 **Auteur:** UnionFlow Team