Factoriser le chargement et l’installation d’une enquête #34
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ticket #032 — Factoriser le chargement et l’installation d’une enquête
Contexte
Après le ticket #031.1, l’application sait :
Cependant, les flux « Nouvelle enquête » et « Ouvrir une enquête » dupliquent encore une partie importante de la logique :
Cette duplication augmentera avec les futures fonctions :
Objectif
Créer dans
src/core/application.cune fonction interne unique qui ouvre et installe une enquête à partir de son dossier racine.Contrat attendu :
Cette fonction doit garantir :
Travail à réaliser
1. Ajouter un domaine d’erreur privé
Dans
src/core/application.c, ajouter un domaine d’erreur uniquement utilisé par le contrôleur.Exemple :
Ajouter :
Puis :
Le domaine reste privé à
application.c.2. Créer la fonction factorisée
Ajouter :
La fonction doit :
application;application->main_window;root_path;InvestigationSession;InvestigationProject;InvestigationTreeModel;application_install_session();Règle de propriété
Avant
application_install_session():Après succès :
Après échec :
Validation de
GErrorLa fonction doit respecter la convention GLib :
L’utilisation de
g_return_val_if_fail()est acceptable ici pour vérifier le contrat du développeur.Les erreurs utilisateur doivent être produites avec :
3. Propager l’erreur de
InvestigationSessionSi :
échoue, la fonction doit conserver l’erreur métier d’origine et lui ajouter du contexte.
Exemple conceptuel :
Ne pas remplacer l’erreur précise par un simple :
lorsqu’un
GErrorest disponible.4. Refactoriser l’ouverture d’une enquête existante
application_on_folder_selected()ne doit plus contenir directement :Elle doit seulement :
application_open_and_install_investigation();GError.Structure attendue :
L’annulation ne doit pas produire de warning.
5. Refactoriser la création d’une enquête
application_on_create_investigation()doit conserver uniquement :Le flux devient :
La fonction ne doit plus reconstruire elle-même :
En cas d’échec après création, le dossier créé reste volontairement sur le disque.
Le message doit être explicite :
6. Ne pas modifier
application_install_session()Cette fonction conserve sa responsabilité actuelle :
MainWindow.Le nouveau helper prépare les objets.
application_install_session()réalise le remplacement final.Pseudo-code de la fonction factorisée
Tests manuels
Création valide
Ouverture valide
Remplacement valide
Échec d’ouverture
Échec après création
Provoquer si possible un échec d’ouverture après création.
Vérifier :
free;Annulation
Annuler le sélecteur de dossier.
Vérifier :
Critères d’acceptation
application_install_session()n’est pas dupliquée.InvestigationSessionsont propagées.makeréussit.make testréussit.git diff --checkne retourne aucune erreur.Audit attendu
La logique d’ouverture ne doit apparaître qu’une seule fois :
Résultat attendu :
La création et l’ouverture doivent appeler le helper :
Vérifier l’absence de SQLite direct :
Résultat attendu :
Vérifier le format :
Fichiers concernés
Aucune modification publique n’est normalement nécessaire dans :
Commit attendu
Résultat attendu
Après ce ticket, tous les futurs points d’entrée utiliseront le même flux :
Le ticket #033 pourra ensuite afficher graphiquement les
GErrordéjà correctement produits par ce flux.fy59 referenced this issue2026-07-18 09:01:18 +02:00