Code javascript dans pentaho data integration

Fermé
paulaz Messages postés 1 Date d'inscription jeudi 22 novembre 2012 Statut Membre Dernière intervention 22 novembre 2012 - 22 nov. 2012 à 17:09
ngounou25 Messages postés 96 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 - 22 nov. 2012 à 18:32
Bonjour,
j'ai fais une transformation dans laquelle je dois insérer un bout de code java mais je peine ,quelqu'un peut m'aider?
j'explique :
je dois affichicher tout les n°cpt du client même s'il en a jusquà 10.
mais lorsque j'extrais le fichier il se présente comme ceci

nom prenom idclient n°cpt
xxxx ccccc 0101 2222
xxxx ccccc 0101 3333
xxxx ccccc 0101 4444
rrrrrr hhhhhh 6325 1111
rrrrrr hhhhhh 6325 5555
jjjjjjj kkkk 3222 7777
jjjjjjj kkkk 3222 99999

or voila la structure du fichier que je veux en sortir

nom prenom idclient n°cpt
xxxx ccccc 0101 2222 3333 4444
rrrrrr hhhhhh 6325 1111 5555
jjjjjjj kkkk 3222 86522 35258 54433

merci!!
A voir également:

1 réponse

ngounou25 Messages postés 96 Date d'inscription mercredi 6 août 2008 Statut Membre Dernière intervention 5 juillet 2013 4
22 nov. 2012 à 18:32
Salut,

Je te suggère de créer une classe "Client", avec comme attributs 3 chaînes de caractères représentant respectivement : le nom, le prénom et l'identifiant du client, après quoi, tu créeras un attribut supplémentaire de taille dynamique (un ArrayList<String> par exemple) dans lequel tu enregistreras tous les comptes du client donné.

Dans ton programme principale, tu créera une nouvelle structure dynamique pour stocker les clients du fichier source (ArrayList<Client>).

L'astuce ici sera de lire le fichier source en filtrant directement les doublons. Ainsi, à l'écriture, y aura rien de spécial à faire (à par réaliser l'écriture proprement dite). A chaque fois que tu liras donc une nouvelle ligne de ce fichier source, tu parcourras ta liste de clients et :
- si tu trouve un client associé à cette ligne, alors tu ajoute simplement le compte à la liste de ses comptes ;
- sinon, c'est un nouveau client : tu l'ajoute à ta liste de clients.

Apercu tu code principale (pour la lecture sélective) est donc le suivant :

while(/* fin du fihchier non atteind */) {

    1. String ligne = /* Lire la ligne courante */
    2. La transformer en tableau de caractères
             (String[] tabClient = ligne.split(" ", ' '))
    3. Chercher le client en supposant qu'il n'existe pas (Boolean existe = false)

    for(Client client : listeClients) {

        if(client.getIdClient.equals(tabClient[2])) {
            // le client est déjà enregistré dans ta liste
            existe = true
            // tu ajoutes simplement le compte parmi ses comptes
            client.getComptes().add(tabClient[3])
        }
    }

    if(! existe) {

        // le client n'est pas encore enregistré dans ta liste
        // c'est un nouveau client : tu l'ajoute
        listeClients.add(new Client(tab[0], tab[1], tab[2], tab[3]))
    }

} // end while


Ta liste sera donc sans doublon, et ton nouveau problème sera de la rendre persistante dans ton fichier destination ... Problème que j'estime beaucoup plus abordable :).

RQ : On peut aisément faire mieux (sur le plan complexité). Mais, cette solution, je l'estime assez aisément assimilable ;-) .
0