IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[ Conversion ] VO vers Collection


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut [ Conversion ] VO vers Collection
    Bonjour,

    Je sèche littéralement devant un problème qui doit être pourtant simple.

    J'ai une classe P_nbVO qui définit un 'value object'.

    Lorsque j'instancie un P_nbVO, je peux lire/affecter un nom (String), un code (Long) via getters/setters.

    Le but est de rappatrier d'une BDD un ensemble de couple nom/code dans un type définit par moi-même. Donc j'instancie en fait des tableaux de P_nbVO.


    A côté de ça, j'ai une méthode (qui n'est pas de moi) que je souhaiterais utiliser.

    Le premier argument est une Collection, le second est une 'clé' et le dernier est la valeur correspondant à cette 'clé'.


    Problème : je ne vois pas comment une Collection peut contenir une 'clé' d'un côté et sa valeur de l'autre ... et donc je sèche pour convertir mon P_nbVO[] en Collection

    Le bout de doc qui suis correspond à la méthode à renseigner.

    Merci

    void com.delbardpro.production.web.parametres.article.modifier.ChargerFormForm.setAgeBackingList(Collection items, String valueProperty, String labelProperty)
    Convenient method to quickly set the value and label backinglist for the age property. This method takes a collection of objects, as well as the property names to query on these objects in order to find the corresponding values and labels.

    Let's say you have a set of value objects with the following properties:

    id
    code
    name
    description
    But you need to populate the age backing list with the id properties as the values and the name properties as the labels then you would make a call like this: setAgeBackingList(valueObjects, "id", "name")
    This method knows how to handle primitive property types as it simply delegates to org.apache.commons.beanutils.PropertyUtils.getProperty(Object, String).

    See Also:
    getAge()
    getAgeValueList()
    getAgeLabelList()
    getAgeLabelList()
    Parameters:
    items The items from which to read the properties, if this argument is null this method will simply clear the existing values and labels
    valueProperty the name of the property to query on each object to retrieve the corresponding value, cannot be null
    Throws:
    java.lang.IllegalArgumentException if the valueProperty or labelProperty is null
    java.lang.RuntimeException if one of the items in the collection is null, or if the caller does not have access one of the object's properties, if an exception was thrown while accessing a property or if the property does not exist on at least one of the items
    P.S. L'objectif est de renseigner une listbox

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    Une collection qui associe clé à valeur existe : les Maps.

    Mon tutoriel sur les collections t'en dit un peu plus dessus, sinon il y a la Javadoc .

    Cordialement

    Fred

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par mavina
    Une collection qui associe clé à valeur existe : les Maps.
    A ceci près que Map n'est pas une Collection

    Mais bon, je chipote

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    ca n'est pas une Collection c'est vrai ...
    Sinon une Collection n'est qu'un contenant, et ta classe pourrait être le contenu.
    Il faut voire la compatibilité entre la collection de ta fonction et la collection que tu pourrais éventuellement créer à partir de ton tableau

    Fred

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    Merci pour ces premières réponses

    J'ai lu la FAQ sur map hier soir également et il y a quelque chose que je n'ai pas compris.

    Map permet-il de gérer des couples de type différent ? Je pense que non.

    Dans mon cas, je dois stocker un Long (code) et une String (nom).

    Ma première idée était d'associer un nom de colonne à sa valeur.
    Problème, le second couple n'est pas conforme à ma déclaration de map et ne le sera jamais.

    Map<String,Long> map = new HashMap<String,Long>();
    map.put("Id", 0L);
    map.put("Lnb", "test");
    Donc j'ai pris le problème autrement.
    Mais du coup je n'ai plus d'intitulé de 'colonne' (id,Lnb) ... seulement une suite de valeurs ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map<String,Long> map = new HashMap<String,Long>();
    map.put("test", 0L);
    Bref, je continue de réfléchir ...

  6. #6
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Juste un conseil, imagine la tête de la personne qui va passer après toi quand il va vouloir comprendre ce que représente 'P_nbVO', perso moi ça ne me parle pas. Ca n'a rien a voir avec ton probleme, mais essayes de donner des noms de classe plus parlant, parce que même toi si tu reviens dessus dans un an ou deux tu vas te demander ce que tu voulais dire par P_nbVO. C'était juste une apparté d'un type qui vient de reprendre un projet où le developpeur avait les mêmes reflexes que toi pour nommer les classes, et donc pour info, ma tête ressemblait à peu prés à ,

  7. #7
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    tu a peur que ce soit toi le mec apres Scorpyosis
    je

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    Citation Envoyé par Scorpyosis
    Juste un conseil, imagine la tête de la personne qui va passer après toi quand il va vouloir comprendre ce que représente 'P_nbVO', perso moi ça ne me parle pas. Ca n'a rien a voir avec ton probleme, mais essayes de donner des noms de classe plus parlant, parce que même toi si tu reviens dessus dans un an ou deux tu vas te demander ce que tu voulais dire par P_nbVO. C'était juste une apparté d'un type qui vient de reprendre un projet où le developpeur avait les mêmes reflexes que toi pour nommer les classes, et donc pour info, ma tête ressemblait à peu prés à ,
    Le P signifie Paramètrage (il s'agit de manipuler les éléments d'une table de paramètrage)
    Le nb signifie nom botanique
    le VO signifie value object

    C'est documenté un minimum et chaque classe répond à la même syntaxe.

    Mais si tu as une meilleure manière de faire, je suis preneur

  9. #9
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Citation Envoyé par BainE
    tu a peur que ce soit toi le mec apres Scorpyosis
    je
    Non j'ai pas de peur particulière, d'ailleurs après le projet que je suis en train de finir, je n'ai plus peur de rien

    Bon si c'est une convention d'écriture commune à tous ceux qui bossent ensemble, ça peut le faire, le danger est quand c'est sa propre convention d'écriture..... Pour ma part, je conseille de ne jamais faire d'abréviation car toujours sujet à polémique, donc moi j'aurais fais :
    ParametrageNomBotaniqueValueObject ou plutot
    ParametrageNomBotaniqueValeurObjet car je ne mélange pas le français et l'anglais en cours de route.... Je sais c'est un peu long mais au moins on sait ce que ca veut dire. Ce n'est pas une critique contre toi que je fais surtout s'il s'agit de convention entreprise, mais plus d'un coup de gueule contre tout ceux qui font du tres beau code .... de m**** et qui se moquent totalement de celui qui va repasser derrière. Pour exemple, je viens de tomber sur une méthode qui fait 1152 lignes (facile à comprendre si si) avec comme nom de variable, a,b,c,....z, a1,a2... jusqu'à b4 !!!!!!! Le nom des classes est super important car on doit savoir ce qu'on manipule, et non allez chercher dans la doc pour savoir à quoi ca corresponds enfin je suis sur que tu me comprends.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 88
    Par défaut
    Bon en fait c'était très bête ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        		// recupere la liste des noms botaniques et charge la listbox    		
        		P_nbVO[] nbVO = this.getNomBotaService().lister("", "", null);
     
        		form.setNbBackingList(Arrays.asList(nbVO), "id", "lnb");
    Concernant la convention d'écriture, j'essaye de l'adapter au fur et à mesure du développement. J'ai commencé en écrivant mes classes au pif puis je me suis dit que ce serait plus simple d'adopter des mécanismes de nommage.

    Je passe beaucoup de temps à faire du 'refactoring' (ortho ?) à l'aide des best pratice que je trouve à droite à gauche. La majeure partie du code est generé par AndroMDA.
    J'ai quelques tests unitaires à côté. Tout celà est très nouveau pour moi mais j'ai gagné énormèment en productivité.

    Je suis conscient que mon code peut être choquant pour un puriste mais je ne demande qu'à apprendre ... mais je suis seul donc c'est pas toujours évident !

    Merci à vous, merci internet :p

  11. #11
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Citation Envoyé par jeoff
    Je suis conscient que mon code peut être choquant pour un puriste mais je ne demande qu'à apprendre ... mais je suis seul donc c'est pas toujours évident !
    C'est pas toujours facile de garder une certaine lisibilité dans son code, surtout quand on le fait seul comme dans ton cas. Quand on travaille en équipe, on te fait vite remarquer la chose . Pour ma part, le meilleur nommage pour les classes c'est de mettre leur nom complet comme je l'ai déjà dit au dessus. Mais je ne sais pas si les puristes seront d'accord avec moi

  12. #12
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Les regles de nommage me font penser à une similitude chez nous : la certification ISO machin-chose.
    Ce truc senser améliorer le travail en gagnant par exemple 1h de recherche une fois tous les 3 mois, seulement, c'est le truc qui te coute 2h de taf par mois...
    Faut relativiser, entre nommer ses classes A1,A2...ZZ et les nommer LaBelleClasseQueJaiCreerPourLAplicationGraphiqueTrucMuche, on peut peut-être trouver un compromis en utilisant des régles de nommage propre à l'entreprise.

  13. #13
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Genre NomBotaniqueParam...

    Value Object n'a rien àfaire dans le nom de la variable je trouve...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Unix vers DOS...
    Par nicosfly dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2008, 18h53
  2. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 10h23
  3. conversion Access vers SQL
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/03/2004, 14h57
  4. [langage] conversion décimal vers hexa
    Par chipster dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2004, 17h05
  5. Conversion Timestamp vers varchar
    Par stejutt dans le forum SQL
    Réponses: 4
    Dernier message: 08/01/2004, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo