Guetter les getter et sauter les setter
Une petite verrue pour recenser les attributs et méthodes dédiées devrait faire l'affaire pour éviter de trop modifier mon générateur basé sur Graphviz. Mais en réalité, c'est plus complexe que cela.// -------------------------------------------
void manageGetSet() {
int f;
int m;
Field fi[] = {};
try {
fi = c.getDeclaredFields();
} catch (Error e) {
}
for (f = 0; f < fi.length; f++) {
boolean hasGet = false;
boolean hasSet = false;
String nomChamp = fi[f].getName();
String nomChampGet = "get" + nomChamp.toUpperCase().substring(0, 1)
+ nomChamp.substring(1);
String nomChampSet = "set" + nomChamp.toUpperCase().substring(0, 1)
+ nomChamp.substring(1);
Method mi[] = {};
try {
mi = c.getDeclaredMethods();
} catch (Error e) {
}
for (m = 0; m < mi.length; m++) {
String methodName = mi[m].getName();
if (methodName.compareTo(nomChampGet) == 0) {
hasGet = true;
}
if (methodName.compareTo(nomChampSet) == 0) {
hasSet = true;
}
}
if (hasSet && hasGet) {
vGetSetFields.add(nomChamp);
vGetSetMethods.add(nomChampGet);
vGetSetMethods.add(nomChampSet);
} else
if (hasGet) {
vGetSeulFields.add(nomChamp);
vGetSeulMethods.add(nomChampGet);
}
}
}
// -------------------------------------------
Tester
Voici un exemple tiré des showcase de Primefaces.Le premier schéma indique le modèle sans distinguer getter et setter, le deuxième permet quant à lui de les distinguer.
- Version brute
- version améliorée
Petit constat
- le jaune n'est pas généré par Graphviz, - pas encore trouvé comment faire - il permet juste de visualiser les différences notables.
- deux blocs supplémentaires figurent sur le graphe, un bloc "get set" tout en haut, un bloc "get seul" juste en dessous. Les blocs vides ont été noircis.
- c'est améliorable, surtout quand la manipulation des couleurs sera possible dans les records Graphviz.
- le graphe est plus compact, il le serait moins si le graphe ne contenait pas des beans java.
- vérifier la faisabilité avec yED.
Liens
- une page issue des showcase de Primefaces : http://www.primefaces.org/showcase/ui/lineChart.jsf