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
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.