Avant d'aborder les chapitres suivants, une révision
générale s'impose
Nous allons renommer nos tables ce qui nous oblige à passer en revue les
classes déjà mises en oeuvre
Profitons en aussi pour partir sur une petite application concrète de
gestion d'agenda personnel
Le Framework met à disposition du Dev 2 méthodes
particulières
Après la première connexion de l'utilisateur un appel à setUserParamFromDb
est fait dans l'AppliParam, profitons de cette méthode
pour renommer nos tables (C'est une sur-définition à faire)
On utilise généralement cette méthode pour initialiser les ports série
du PC ou pour instancier des valeurs qui seront nécessaires à
l'exploitation du logiciel
J'ajoute setUserParamFromDb à l'AppliParam
public void setUserParamFromDb(Gp gpAbc){ Sql sql=new Sql(gpAbc.gp); //On se connecte à la base Métier Sql sqlTmp=new Sql(sql, "sous_table_test"); //On travaille à partir de la table sqlTmp.renameTable("type_contact", true); //On renomme la table sqlTmp.closeT_stat(); //On libère les tables sql.closeCx(); //On libère la connexion }
Je change le titre du logiciel et son numéro de version dans l'AppliParam
//TITRE_APPLI="Mon application"; TITRE_APPLI="Mon Agenda"; //VERSION = "1.01"; VERSION = "1.02";
Je modifie SousTableTestFICHE le nom de la table
//t_table="sous_table_test"; t_table="type_contact";
Je modifie SousTableTestLISTE le nom de la table
//t_table="sous_table_test"; t_table="type_contact";
Je modifie TableTestLISTE le nom de la table en liaison et la désignation
//addSqlField("sous_table_test.c_libe", 30, Fma.FIELD, "Libellé sous table"); addSqlField("type_contact.c_libe", 30, Fma.FIELD, "type de contact");
Je modifie TableTestPRINT le nom de la table en liaison et la désignation
//addSqlField("sous_table_test.c_libe", 30, Fma.FIELD, "Libellé sous table"); addSqlField("type_contact.c_libe", 30, Fma.FIELD, "type de contact");
Je modifie TableTestVUE le nom de la table en liaison
//"sous_table_test", "type_contact",
Je modifie TableTestFICHE le libellé
//addSqlField("c_stab", 2, Fma.F2, "sous table", "", Edit.F2, ""); addSqlField("c_stab", 2, Fma.F2, "type de contact", "", Edit.F2, "");
Je refactorise le package en typeContact
Je refactorise les 4 classes en TypeContactxxx
Je compile et je teste cela fonctionne mais les menus ne sont pas à jour
Attention le titre de la vue reprend le titre de
l'option du menu
Aller dans le menu développement/menu et changer l'option de menu
Changer aussi la Key pour l'appliParam en type_cont
Je modifie AppliParam
//} else if (option.equals("sstb_test")){ } else if (option.equals("type_cont")){
Mince, il faut retirer le renommage de la table
public void setUserParamFromDb(Gp gpAbc){ // Sql sql=new Sql(gpAbc.gp); //On se connect à la base Métier // Sql sqlTmp=new Sql(sql,"sous_table_test"); //On travaille à partir de la table // sqlTmp.renameTable("type_contact",true); //On renomme la table // sqlTmp.closeT_stat(); //On libère les tables // sql.closeCx(); //On libère la connexion }
Changer la fiche 01 en "Personnel"
Changer la fiche 02 en "Professionnel"
1) renommer la table en Contact par le setUserParamFromDb
2) changer le nom la table dans les classes de mappage
3) refactorer le package et ses classes
4) Adapter le menu, changer la key et mettre à jour l'Appliparam
Bien réfléchir concernant les noms des tables, car
comme vous avez pu le constater, les reprendre est un peu long
Depuis ce premier apprentissage de l'Api, vous pouvez d'ores et déjà
construire l'arborescence d'un logiciel et aussi commencer à mettre en
place vos premières tables de base
Je vous invite à enchaîner la mise en place de plusieurs tables à la
suite pour favoriser vos automatismes
La deuxième méthode setAppliParamFromDb
qui est appelée avant la connexion du premier utilisateur.
En particulier, on peut l'utiliser pour se connecter à une base de
données autre que celle prévue initialement