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

Java Discussion :

Code dynamique a l'éxecution


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Yro
    Yro est déconnecté
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Par défaut Code dynamique a l'éxecution
    Bonjour,

    J'aimerais faire un petit programme qui chargerait un fichier CSV dans une Jtable (Nombre de colonne variable).
    Jusque la pas de problème

    Ensuite je voudrait appliquer une série de "manipulations" sur ces données.
    Ces manipulations seraient décrite en dehors du programme dans un fichier Texte qui sera à charge du "paramètreur".
    L'utilisateur lui charge le CSV et applique les modifications des données en choisissant un des fichiers externe.

    En somme au final j'aurai mon fichier Jar et plusieurs fichier d'instruction.

    D'après mes recherches je peux soit écrire ces fichiers en JAVA qui implémenterait une interface commune.
    Je dois ensuite compiler le fichier, l'ajouter dynamiquement dans le programme avec ClassForName(.....).getInstance();
    Et appeler la méthode implémentée en passant mon tableau en argument.

    Une deuxième solution que j'ai vu, est d'utiliser un langage externe comme GROOVY.
    Le fichier externe est donc écrit en Groovy et dans mon programme je lance le fichier en passant en paramètre mon tableau.

    L'avantage de groovy est que l'on n'a pas la phase de compilation mais y a t'il des limite avec ce langage ? Je veux dire au niveau de l'interaction entre JAVA et Lui.
    Les manipulations a faire serait essentiellement du mapping, de la vérification, ajout de valeur par défaut, ...

    Après l'execution de ce code "externe", l'application exportera un nouveau fichier CSV modifié.

    Merci pour vos avis.
    Cordialement,

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    J'ai une question avant d'aller plus loin.

    Est-ce que toutes les opérations sont listées à l'avance et le "paramètreur" indique simplement lesquelles ils souhaites utiliser ainsi que l'ordre des opérations ?

    Ou est-ce que ce "paramètreur" doit aussi pouvoir intégrer des nouvelles opérations à la volée ?

  3. #3
    Yro
    Yro est déconnecté
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Par défaut
    Bonjour Nic002,

    Pour être plus précis je vais donner un exemple:
    Fichier CSV d'origine :
    0001;0812;Nom 1;Prénom 1;01/11/2008;Employe;40;;5200
    0001;0847;Nom 2;Prénom 2;05/10/2000;Ouvrier;;;3200
    0002;0124;Nom 3;Prénom 3;08/01/2005;Employe;40;;5200

    Mon programme charge ce fichier dans une Jtable tel qu'il est la.
    L'utilisateur choisi ensuite dans une liste une fichier qui contient les manipulation a faire (écrit par un paramétreur)

    exemple fichier du paramétreur (JAVA, GRoovy, autres, ..... pseudo code ici)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Pour toute les lignes faire
     
      //Mise en forme
      convertir_date (Colonne5,"AAAAMMJJ")
     
      //Mapping
      Selon Colonne6 
         cas "Employe" : Colonne6 = "Emp"
         cas "Ouvrier" : Colonne6 = "Ouv"
         cas autre: Colonne6 = "Ind"
      Fin
     
      //Valeur par défaut
      Si Colonne7 = "" 
         Colonne7 =  "40"
      Fin
     
      //Forcing de valeur
      Colonne1 = "0001"
     
      //Forcing spécifique
      Si Colonne2 = "0812" 
         Colonne3 = "Bazin"
         Colonne4 = "Hervé"
      Fin
     
     //Ajout de colonne a la fin
     AjoutColonne()
     Colonne10 = "OK"
     
    Fin
    A la fin du script, le programme génère un fichier CSV modifié:
    0001;0812;Bazin;Hervé;20081101;Emp;40;;5200;OK
    0001;0847;Nom 2;Prénom 2;2001005;Ouv;40;;3200;OK
    0001;0124;Nom 3;Prénom 3;20050108;Emp;40;;5200;OK

    J'espère que cela est plus clair

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ton fichier de "paramètres" pourrait être en JavaScript : tu pourrais utiliser Nashorn pour faire tes manipulations. Il y aurait juste éventuellement un simple bridge à écrire pour spécialiser les commandes javascript. Le seul manque, c'est que tu ne pourras pas utiliser de lambda à la syntaxe Java, il me semble : je ne sais pas pour quand c'est prévu (Java9 avec un peu de chance).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 873
    Par défaut
    Salut,

    Pour le besoin de créer un langage spécifique à ton besoin, tu peux utiliser ANTLR qui te permettra de définir ton propre langage, tu auras ainsi toute la liberté de fournir un jeu d'instructions restreint et donc aussi d'éviter les bugs, car si les "paramétreurs" ont accès à du code Java, ou Groovy, ou autre, ils ont accès à toute les fonctionnalités et cela peut poser des problèmes. Le DSL (Domain Specific Language) te permet dans ce cas de permettre même à des non-programmeurs de concevoir les "transformers" dont ton application a besoin.

    Il existe probablement d'autres librairies que ANTLR pour ce besoin

    A+

Discussions similaires

  1. Morceaux de code dynamique
    Par Celeborn dans le forum C++
    Réponses: 3
    Dernier message: 11/06/2009, 20h50
  2. Générer du code dynamiquement
    Par seb-oulba dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2006, 23h26
  3. [VB6] générer du code dynamiquement
    Par nils.angot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h40
  4. Introspection et création de code dynamiquement ?
    Par elitost dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 17/10/2005, 22h43
  5. Interprétation de code dynamiquement
    Par Smeuuh dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 29/09/2005, 09h32

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