Abc-wtools est un framework de production de logiciel de gestion de type desktop utilisant une base de données sql en java

Description

Abc-wtools est un framework de production de logiciel de gestion de type desktop utilisant une base de données sql en java.

Il permet de produire de petites applications légeres standalone en s'appuyant sur le gestionnaire de base de données Sqlite (FireFox,Iphone etc..).

Il permet aussi de produire des applications desktop plus traditionnelles en s'appuyant sur le gestionnaire de base de données MySql.

C'est un projet que j'exploite dans mon cadre professionnel. Il est développé en pur java JSE "à l'ancienne" : pas de hibernate,spring,strusts et consorts. Pour être le plus light possible.

Le site
http://abc-wtools.projets.developpez.com

Source / Exemple :


Consulter Le site http://abc-wtools.developpez.com 
pour disposer d'une présentation détaillée et accéder à l'ensemble des ressources.

Exemple de codage d'une table
Mappage de la liste

 1 package tableTest;
 2 import persistance.wSql.AbstractFieldsDef;
 3 import persistance.wSql.Sql;
 4 import template_applicatif.wFichier.AbstractFichier;
 5 
 6 import composant_saisie.wSaisieFormat.Ccs;
 7 public class TableTestLISTE extends AbstractFieldsDef {
 8     public TableTestLISTE(Sql sql,int vue) {
 9         super(sql,vue);
10     }
11     public Object adapteField(int vue){
12         t_table="table_test"; //Nom de la table 
13         t_nbLigne=28;         //Nombre de ligne à afficher
14         t_filtre=null;
15         v_filtre=null;
16         t_index=new String[]{"c_code"}; //Order de la table
17         switch (vue){
18         case AbstractFichier.FICHIERF3:
19         default:{
20             addSqlField("c_code" , 2,Ccs.t_TEXTNUMGRAS,"Code");  //1ere Colonne et 1er titre de colonne
21             addSqlField("c_libe" ,30,Ccs.t_TEXTFIELD,"Libelle"); //2eme Colonne et 2eme titre de colonne
22             break;}
23         }
24         return this;
25     }
26 }

__________________________________________________________
Mappage de la fiche

 1 package tableTest;
 2 import persistance.wSql.AbstractFieldsDef;
 3 import persistance.wSql.Field;
 4 import persistance.wSql.Sql;
 5 
 6 import composant_saisie.wSaisieFormat.Ccs;
 7 public class TableTestSTRUCT extends AbstractFieldsDef {
 8      public TableTestSTRUCT(Sql sql,int vue) {
 9          super(sql,vue);
10      }
11      public Object adapteField(int vue){
12          t_table="table_test"; //Nom de la table 
13          t_nbLigne=1;
14          t_filtre=null;
15          v_filtre=null;
16          t_index=new String[]{"c_code"}; //Order de la table
17          switch (vue){
18          default:{
19              addSqlField("c_code" ,2,Ccs.t_TEXTF2,"Code","",Field.F2,"");           //1er Edit et 1er Libellé
20              addSqlField("c_libe" ,30,Ccs.t_TEXTFIELD,"Libelle","",Field.TEXT,"");  //2eme Edit et 2eme Libellé
21              break;}
22          }
23         return this;
24     }
25  }

__________________________________________________________
L'affichage et la saisie standard

 1 package tableTest;
 2 import javax.swing.JComponent;
 3 import persistance.wSql.Sql;
 4 import template_applicatif.wFiche.AbstractDbFiche;
 5 import template_applicatif.wFiche.FicheIEditableColumns;
 6 import template_applicatif.wFichier.AbstractFichier;
 7 import template_applicatif.wListe.ListeIEditableColumn;
 8 
 9 import composant_saisie.wComposant.JTextDb;
10 import composant_saisie.wComposant.JTextDbF2;
11 import composant_saisie.wSaisieFormat.Ccs;
12 public class TableTestSAISIE extends AbstractDbFiche {
13     private static final long serialVersionUID = 1L;
14 
15         // Déclaration des composants
16     JTextDb lcode,llibe;      // Les Labels de la fiche
17     JTextDbF2   code=null;    //1er Edit
18     JTextDb     libe=null;    //2eme Edit
19     public TableTestSAISIE(Sql sql) {
20         super(sql);
21         initStart();
22     }
23 
24     ////////////////////
25     // Initialisation //
26     ////////////////////
27 
28         // Création des composants
29     public void initCreateLE() {
30         // Les labels
31         lcode=new JTextDb();
32         llibe=new JTextDb();
33         // Les Edits
34         code    =new JTextDbF2(new TableTestFICHIER(sql,"",AbstractFichier.F2));  //Une Combobox de choix Pour la saisie du code
35         libe    =new JTextDb();
36     }
37         // Mappage des composants
38     public void initMapLE() {
39         // Les labels
40         ccs.mapL(this,lcode,0);
41         ccs.mapL(this,llibe,1);
42         // Les Edits
43         ccs.mapE(this,code,0);
44         ccs.mapE(this,libe,1);
45     }
46 
47     //A noter pas de panel à créer, le Template le déssine automatiquement en fonction de la Définition de structure
48     //protected  void initGuiLE(){}
49 
50     public void initFocus() {
51         setDefFocus(code);
52     }
53 
54     ///////////////////////////////////////
55     // Liaison saisie rapide Liste/Fiche //
56     ///////////////////////////////////////
57 
58     public void setEditableColumns(FicheIEditableColumns fe, ListeIEditableColumn fl) {
59         libe.setEditableColumns(fe,fl);  // Le libellé est éditable dans la liste
60     }
61     public void fireEditableColumnUpdate(String nameField, Object value) {
62         libe.fireEditableColumnUpdate(nameField,value); // Le libellé est éditable dans la liste
63     }
64 
65     ////////////////////////
66     // Contrôle de saisie //
67     ////////////////////////
68 
69     public void setBaseListener() {
70         // La clé dindex
71         ccs.addF2Listener(code,Ccs.NEWCODEF2);
72         ccs.addF2Listener(code,Ccs.CONSULTF2);
73         // La fiche
74     }
75     public void fireBaseListener(JComponent jc){
76         // La clé dindex
77         if (jc==code){
78             if (sql.isModeMovable()){
79                 ccs.fireT(jc,Ccs.CONSULTF2);
80             }    
81             if (sql.isModeAppendUpdated()||sql.isModeAppend()){
82                 ccs.fireT(jc,Ccs.NEWCODEF2);
83             }
84         }
85         // La fiche
86     }
87     protected void fireContextualRange(JComponent jc) {}
88     protected void updateDependant(JComponent jc) {}
89     protected void updateContextualRangeAndEnable(JComponent jc) {}
90     public void setDependants() {}
91 
92     //////////////////////////
93     // Adaptation dynamique //
94     //////////////////////////
95 
96     public void loadEAdapteGuiLE() {}
97 }

Le module fichier qui agrège la fiche/la liste/le composant F2/l'édition

 1 package tableTest;
 2 import persistance.wSql.AbstractFieldsDef;
 3 import persistance.wSql.Sql;
 4 import template_applicatif.wFiche.AbstractDbFiche;
 5 import template_applicatif.wFichier.AbstractFichier;
 6 import template_applicatif.wListe.AbstractDbListe;
 7 import template_applicatif.wListe.ListeRecno;
 8 public class TableTestFICHIER extends AbstractFichier {
 9     private static final long serialVersionUID = 1L;
10     public TableTestFICHIER(Sql sql, String t_seek, int vue) {
11         super(sql, t_seek, vue);
12     }
13     public AbstractDbListe getDbListe() {
14         AbstractDbListe ret=null;
15         adapteJoin(sqlListe);
16         ret=new ListeRecno(sqlListe);  //Branchement de la liste standard en fonction le la Définition de la liste
17         return ret;
18     }
19     public AbstractDbFiche getDbFiche(int vue) {
20         AbstractDbFiche ret=null;
21         sqlFiche.t_AccesMode=Sql.t_AccesModeRecno;
22         adapteJoin(sqlFiche);
23         ret=new TableTestSAISIE(sqlFiche);  //Branchement de la saisie
24         return ret;
25     }
26     public AbstractFieldsDef getFieldsDefEcran(int vue) {
27         AbstractFieldsDef ret=null;
28         ret=new TableTestSTRUCT(sqlFiche,vue); //Définition de la table
29         return ret; 
30     }
31     public AbstractFieldsDef getFieldsDefListe(int vue) {
32         AbstractFieldsDef ret=null;
33         ret=new TableTestLISTE(sqlListe,vue);  //Branchement de la liste
34         return ret;
35     }
36     public AbstractFieldsDef getFieldsDefPrint(int vue) {
37         AbstractFieldsDef ret=null;
38         return ret;
39     }
40     public AbstractFieldsDef getFieldsDefRupture(int vue) {
41         AbstractFieldsDef ret=null;
42         return ret;
43     }
44     public void adapteJoin(Sql sql){
45         }
46 }

Conclusion :


Cette version a été élaborée afin de mettre en oeuvre le langage Java. Le code n'est pas toujours élégant et les techniques employées quelque fois maladroites, mais il est fonctionnel.

Les projets sont élaborés en deux parties le framework Abc-wtools et l'aplication Métier.
Seule Abc-wtools et mis en download.

Reporter vous au site http://abc-wtools.developpez.com pour les exemples et autres download

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.