Bonjour tout le monde.
Pour sauvegarder/restaurer les données d'un programme de comptabilité personnelle, je voudrais utiliser un fichier XML du genre :
<sauvegarde>
<Objet classe="Credit" Version="1.0">...</Objet>
<Objet classe="Debit" Version="1.0">...</Objet>
</sauvegarde>
La version correspondrait à une version de la classe, permettant au programme mis à jour de lire un fichier provenant d'une version précédente.
Chaque classe sauvegardée aurait la responsabilité d'importer les données qui l'intéresse pour créer les objets.
Class Credit {
private static ArrayList<Credit> listeCredit = new ArrayList<Credit>();
public static Credit importer(noeud XML) {
...
[Ajout du nouvel objet Credit à listeCredit]
}
}
Class Credit {
private static ArrayList<Debit> listeDebit = new ArrayList<Debit>();
public static Debit importer(noeud XML) {
...
[Ajout du nouvel objet Debit à listeDebit]
}
}
Mais comment appeler ses méthodes classiques ? Je pense créer une classe GestionnaireSauvegarde qui parcourt le XML et appelle les différentes méthodes d'importations en fonction de la classe de l'objet.
Je n'ai pas les classes/méthodes XML en tête alors je vais faire du pseudo code, désolé.
Je sais faire ça :
class GestionnaireSauvegarde{
public void exporter(String fichierXML){
[Créer le fichier XML]
[DEBUT Pour chaque objet à sauvegarder]
racineXML.ajouterNoeud(objet.exporter);
[FIN Pour chaque objet]
}
public void importer(String fichierXML){
[Ouvrir le fichier XML]
[DEBUT Pour chaque balise sous la racine]
nomClasse = balise.getParameter("classe" );
if(nomClasse.equals("Credit" )) Credit.importer(balise)
if(nomClasse.equals("Debit" )) Debit.importer(balise)
[FIN Pour chaque balise sous la racine]
}
}
Ce qui m'oblige à créer une ligne if(classe.equals("<classe>" )) <classe>.importer(balise)
Et je vais en gérer plusieurs des classes comme cela.
J'aimerais plutôt faire :
[DEBUT Pour chaque balise sous la racine]
nomClasse = balise.getParameter("classe" );
Class classe = Class.forName(nomClasse);
classe.importer(balise)
[FIN Pour chaque balise sous la racine]
Mais là, même si je gère une exception pour méthode non existante le compilateur va me jeter bien sûr
- Ma méthode d'importation est-elle intéressante ?
- Comment appeler la méthode statique importer(Noeud XML) dynamiquement ?
J'espère avoir été clair en tout cas
Et merci
Message édité par moustik510 le 13-04-2010 à 10:27:32