OVH Cloud OVH Cloud

créer automatiquement des setters et getters ???

10 réponses
Avatar
yvon.thoravalNO-SPAM
j'aurais besoin de créer auto matiquement setter et getter comment
fait-on ???

le pb : l'user entre des noms de colonnes d'une jTable par exemple :

"wine-color", "vine-plant", "buy-date", "buy-number" etc ...

associé à cette liste les types :

String, String, Date, int etc ...

et je voudrais pourvoir créer automatiquement les setters et getters de
chaque colonne du genre :

/**
* Gets the Vintage
* @return Integer the Vintage
*/

public Integer getVintage() {
return mVintage;
}

/**
* Sets the Vintage
* @param pVintage the Vintage
*/

public void setVintage(Integer pVintage) {
mVintage = pVintage;
}


de manière à pouvoir appeler le constructeur de mes colonnes, de la
forme :

new DefaultTableViewColumn("Millesime",
Row.class.getDeclaredMethod("getVintage", null), Row.class

.getDeclaredMethod("setVintage", new
Class[]{Integer.class})),

par exemple.
--
yt

10 réponses

Avatar
cfranco
Yvon Thoraval wrote:

j'aurais besoin de créer auto matiquement setter et getter comment
fait-on ???

le pb : l'user entre des noms de colonnes d'une jTable par exemple :

"wine-color", "vine-plant", "buy-date", "buy-number" etc ...

associé à cette liste les types :

String, String, Date, int etc ...

et je voudrais pourvoir créer automatiquement les setters et getters de
chaque colonne du genre :

/**
* Gets the Vintage
* @return Integer the Vintage
*/

public Integer getVintage() {
return mVintage;
}


Je ne comprends pas tout bien ce que tu veux faire. Les noms des
colonnes de la JTable sont libres, l'utilisateur peut mettre ce qu'il
veut ? La classe existe déjà, et tu veux appeler les getter et setter
correspondant aux propriétés que l'utilisateur désigne, ou bien tu veux
générer le code source de la classe à partir de ce que l'utilisateur a
entré dans le JTable ?

--
Christophe Franco

Avatar
yvon.thoravalNO-SPAM
Christophe Franco wrote:

Je ne comprends pas tout bien ce que tu veux faire. Les noms des
colonnes de la JTable sont libres, l'utilisateur peut mettre ce qu'il
veut ? La classe existe déjà, et tu veux appeler les getter et setter
correspondant aux propriétés que l'utilisateur désigne, ou bien tu veux
générer le code source de la classe à partir de ce que l'utilisateur a
entré dans le JTable ?


Non, pas exactement, je suis en train de créer une SortedTable qui sera
wrappée dans du xml (je ne m'occupe pas du côté xml qui provient
d'ultrid).

Le designer qui va utiliser ce component va définir une row, par
exemple, dans mes essais (gestion d'une cave à vin) j'ai la row suivante
:

Row(String pDescription, Integer pVintage, Date pBuyDate, Integer
pBuyNumber, Integer pCurrentNumber)

ca ce n'est pas qqc de fixé une fois pour toute ...

à partir de là j'ai une array de column :
SortedTableColumn[] columns = {

new DefaultSortedTableColumn("Description",
Row.class.getDeclaredMethod("getDescription", null), Row.class
.getDeclaredMethod("setDescription", new
Class[]{String.class})),[idem +/- pour les autres colonnes]

où je déclare les getters et les setters bon, mais ça je l'ai fais pour
un essai bien défini, dans la version je ne sais pas a priori quels
seront les noms des méthodes à déclarer, enfin pas tout à fait car la
définition de la row vue au dessus c'était du java, en définitive ce
sera wrappé dans du xml, donc la row, dans l'exemple ci-dessus sera
décrite ainsi par deux attributs d'un tag xml :

name-list="description|vintage|buy-date|buy-number|current-number"
type-list="string|integer|date|integer|integer"

bon déclarer les méthodes setters et getters pas de pb, c'est juste une
manipulation de strings, mais il faut aussi qu'ils existent qqpart par
ex :

public String getDescription() {
return mDescription;
}

public void setDescription(String pDescription) {
mDescription = pDescription;
}

ce sont ces couples-là que je cherche à générer automatiquement, amha ça
doit pas être très sioux...
--
yt

Avatar
cfranco
Yvon Thoraval wrote:

bon déclarer les méthodes setters et getters pas de pb, c'est juste une
manipulation de strings, mais il faut aussi qu'ils existent qqpart par
ex :

public String getDescription() {
return mDescription;
}

public void setDescription(String pDescription) {
mDescription = pDescription;
}

ce sont ces couples-là que je cherche à générer automatiquement, amha ça
doit pas être très sioux...


Donc on en revient à ce que je demandais, ce que tu veux, c'est ajouter
automatiquement une propriété avec son getter et son setter dans une
classe donnée, c'est bien ça ?

--
Christophe Franco

Avatar
yvon.thoravalNO-SPAM
Christophe Franco wrote:


Donc on en revient à ce que je demandais, ce que tu veux, c'est ajouter
automatiquement une propriété avec son getter et son setter dans une
classe donnée, c'est bien ça ?


oui, exactement.
--
yt

Avatar
cfranco
Yvon Thoraval wrote:

Christophe Franco wrote:


Donc on en revient à ce que je demandais, ce que tu veux, c'est ajouter
automatiquement une propriété avec son getter et son setter dans une
classe donnée, c'est bien ça ?


oui, exactement.


Et alors la question, c'est que tu veux le faire dynamiquement, ou bien
générer un code source et compiler la classe ?

--
Christophe Franco


Avatar
jerome moliere
Christophe Franco wrote:

Yvon Thoraval wrote:


bon déclarer les méthodes setters et getters pas de pb, c'est juste une
manipulation de strings, mais il faut aussi qu'ils existent qqpart par
ex :

public String getDescription() {
return mDescription;
}

public void setDescription(String pDescription) {
mDescription = pDescription;
}

ce sont ces couples-là que je cherche à générer automatiquement, amha ça
doit pas être très sioux...



Donc on en revient à ce que je demandais, ce que tu veux, c'est ajouter
automatiquement une propriété avec son getter et son setter dans une
classe donnée, c'est bien ça ?

pour cela un des multiples frameworks de manipulation de bytecode fera

le taff
exp: BCEL projet apache ou JavaAssist dans les projets JBOSS
jerome

--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941


Avatar
yvon.thoravalNO-SPAM
Christophe Franco wrote:

Et alors la question, c'est que tu veux le faire dynamiquement, ou bien
générer un code source et compiler la classe ?


C'est dynamique.
--
yt

Avatar
cfranco
Yvon Thoraval wrote:

Christophe Franco wrote:

Et alors la question, c'est que tu veux le faire dynamiquement, ou bien
générer un code source et compiler la classe ?


C'est dynamique.


A ce moment là, voir du côté des frameworks que Jérôme a cité.

--
Christophe Franco


Avatar
yvon.thoravalNO-SPAM
Christophe Franco wrote:

A ce moment là, voir du côté des frameworks que Jérôme a cité.


OK, merci, je suis à bcel :

« An even more interesting application is the creation of classes from
scratch at run-time. »

Javassist :

« Javassist (Java Programming Assistant) makes Java bytecode
manipulation simple. It is a class library for editing bytecodes in
Java; it enables Java programs to define a new class at runtime and to
modify a class file when the JVM loads it. [...] You can even specify
inserted bytecode in the form of source text; Javassist compiles it on
the fly. »

j'essaierai sans doute les deux.
--
yt

Avatar
Pasturel
jerome moliere a écrit:
Christophe Franco wrote:

Yvon Thoraval wrote:


bon déclarer les méthodes setters et getters pas de pb, c'est juste une
manipulation de strings, mais il faut aussi qu'ils existent qqpart par
ex :

public String getDescription() {
return mDescription;
}

public void setDescription(String pDescription) {
mDescription = pDescription;
}

ce sont ces couples-là que je cherche à générer automatiquement, amha ça
doit pas être très sioux...




Donc on en revient à ce que je demandais, ce que tu veux, c'est ajouter
automatiquement une propriété avec son getter et son setter dans une
classe donnée, c'est bien ça ?

pour cela un des multiples frameworks de manipulation de bytecode fera

le taff
exp: BCEL projet apache ou JavaAssist dans les projets JBOSS
jerome

ou bien plus avancé comme concept, mais c'est soit-disant l'avenir :

l'Aspect Oriented Programming (AOP) voir AspectJ, JBoss AOP, Spring ou
plus simplement Aspectwerkz sur google.