Files
unionflow-client-quarkus-pr…/MIGRATION_UUID_CLIENT.md
2025-11-17 16:02:04 +00:00

159 lines
5.6 KiB
Markdown

# 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