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

Services Web Java Discussion :

REST et sortie CSV


Sujet :

Services Web Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut REST et sortie CSV
    Bonjour,

    Je développe quelques petits services en REST pour exporter des données d'une application web. J'arrive facilement à faire des sorties en xml ou json.
    Cependant je souhaiterai pouvoir faire une sortie en CSV ou excel.

    Existe-t-il un moyen ? Probablement en passant par un MessageBodyWriter, mais je n'ai pas encore trouvé la bonne implémentation.
    D'avance merci de vos lumières.

    HadanMarv

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Pour information voici la signature que j'utilise pour produire du XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @GET
    @Produces(MediaType.APPLICATION_XHTML_XML)
    @Consumes(MediaType.TEXT_PLAIN)
    @Path("/xml")
    public Object getXML(@QueryParam("type") String type,
    		@QueryParam("aff") String aff) {
    	return extract(type, aff);
    }
    Notons que mon POJO étant annoté la transformation de ma grappe d'objet en xml est immédiate.

    J'aimerai donc réalisé la même chose pour générer une sortie CSV ou Excel.
    D'avance merci de votre aide.

    HadanMarv

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Bonjour,

    Je t'invite à lire ce tuto dont une partie correspond à ton besoin
    http://thierry-leriche-dessirier.dev...csv-avec-java/
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Votre tutoriel (très intéressant d'ailleurs, merci) ne réponds pas complètement à la problématique dans le sens ou il est nécessaire de coder très proche de la classe à passer en CSV. Je cherche une méthode plus générique qui permettait en utilisant le principe de réflexion à faire cette export.

    D'avance merci de vos lumières

    HadanMarv

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    En utilisant open csv par exemple, présenté dans le doc ?

    Sinon c'est tellement simple de faire l'export en fait... C'est la lecture qui est dure. A coder, ça ne prend que quelques minutes.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    C'est effectivement trivial à partir du moment ou nous n'avons qu'un POJO est pas une grappe d'objet comme cela est mon cas. Comme mentionné dans mon précédent post cela me dérange quelque peu de "polluer" mon POJO avec une méthode le transformant en un tableau clé / valeur.

    Je pense qu'il serait plus propre de faire une class utilitaire qui en utilisant la réflexion pourrait faire le traitement. Qu'en pensez-vous ?

    HadanMarv

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    J'ai eu la même idée il y a quelques années mais je me suis dis que c'était pourri finalement car la réflexion, ça bouffe un max de perf. Or en général on utilise les fichiers CSV sur des gros volumes.

    Par contre, je ne mettrais pas non plus une méthode dans mes classes pour le faire, car ça va la polluer comme tu l'as justement remarqué.

    Ce que tu peux faire, c'est par exemple des décorateurs qui vont contenir les traitement csv.

    Ou alors, ce que je fais perso, c'est une sorte de multimap inversée que j'alimente manuellement en fonction de mes objets et ensuite je fais une méthode qui exporte la map vers du csv.

    pour exporter la map, ça va être un truc du genre (non testé) :

    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
     
    List<Map<String,String>> allMaps = mes data...
     
    List<String> keys = ...
    StringBuilder sb = new SB();
     
    // Pour les entetes
    for(String key : keys) {
      sb.append(key);
      sb.append(","); // A gerer en plus que le dernier elt n'a pas de virgule
    }
    sb.append("\n");
     
    // Pour le contenu
    for(Map<String> oneMap : allMaps) {
      for(String key : keys) {
        String value = oneMap.get(key);
        sb.append(key);
        sb.append(","); // A gerer en plus que le dernier elt n'a pas de virgule
      }
      sb.append("\n");
    }
    Pour remplir ta multimap inversée, tu peux simplement écrire du code brutal...

    Edit : En outre, il est rare que tu souhaites exporter l'intégralité du contenu de tes objets donc la réflexion, ça craint un max...

    Edit 2 : pour les multimap et les transformations de list en string, je t'invite à utiliser guava. Pour cela je te propose deux liens :
    Tuto sur les collections avec guava : http://thierry-leriche-dessirier.dev...e-collections/

    blog sur guava (en construction) : http://blog.developpez.com/guava/
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2009
    Messages : 169
    Par défaut
    Effectivement, je n'avais pas vu çà sous l'angle des perfs, et je m'étais simplement arrêté à l'idée de restreindre la production de code.

    Votre solution est tout à fait satisfaisante et répondra parfaitement à mes attentes.

    Merci beaucoup pour votre aide.
    Cordialement,

    HadanMarv

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

Discussions similaires

  1. Entête fichier de sortie(csv, excel..)
    Par Lio75 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 04/01/2014, 17h45
  2. Possibilité BIRT sortie CSV et PDF ?
    Par Pacman23 dans le forum BIRT
    Réponses: 5
    Dernier message: 25/01/2010, 11h57
  3. quickreport et états de sortie CSV pour Excel
    Par konfo dans le forum C++Builder
    Réponses: 0
    Dernier message: 19/01/2009, 12h03
  4. [Fortran 77] Formatage sortie .csv
    Par piklas dans le forum Fortran
    Réponses: 6
    Dernier message: 17/09/2007, 16h24
  5. Réponses: 25
    Dernier message: 05/07/2006, 16h46

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