Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 13 sur 13
  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut Charger des données depuis un fichier CSV simple en 5 minutes

    Bonjour à tous,

    Je vous propose un petit article dans la série "en 5 minutes", intitulé "Charger des données depuis un fichier CSV simple en 5 minutes".

    Vous trouverez l'article à l'adresse
    http://thierry-leriche-dessirier.dev...ier-csv-5-min/

    Retrouvez également les autres tutoriels de cette série à l'adresse
    http://thierry-leriche-dessirier.dev...#page_articles

    Bonne lecture.
    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
    Test DISC gratuit : http://icauda.com/disc.php

  2. #2
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Bonjour,

    J'ai réaliser un petit moteur csv à base d'annotations pour mes besoins perso (que je trouve plus simple à utiliser qu'open-csv).

    Ce moteur est dispo ici : https://github.com/ybonnel/MoteurCsv (LGPLv3).
    Et l'utilisation peut être vu dans la classe de test :
    https://github.com/ybonnel/MoteurCsv...urCsvTest.java

    Espérant que cela puisse servir à quelqu'un.

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    J'ai réaliser un petit moteur csv à base d'annotations
    Pour l'article, j'avais choisi Open CSV car je l'avais testé sur de nombreux cas, notamment les fichiers volumineux, les champs multi-lignes, les séparateurs complexes, etc.

    Quelles sont les différences entre Open CSV et votre lib ? Si la lib remplie ses promesses de simplicité, tout en offrant le même niveau de service, je la prendrai en compte dans l'article.

    A noter également le tutoriel "Les fichiers CSV avec Java" :
    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
    Test DISC gratuit : http://icauda.com/disc.php

  4. #4
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Elle est loin d'être au niveau d'open csv en terme de fonctionnalité (mais je prendrai en compte des pull request avec plaisir ).

    Pas de gestion multi-ligne, utilisé que sur des cas simple (en même temps c'est le titre du tuto ).

    Je l'ai créé quand j'ai eu à décodé du GTFS dans le cadre d'une appli android sur les transports de Rennes et Bordeaux.

    L'intérêt est que ça me prend vraiment 5 minutes montre en main pour ajouté la gestion d'un fichier, et 1 minute pour ajouter une colonne dans le CSV.
    Il est par contre indispensable d'avoir un entête au csv, la gestion des colonnes étant géré par nom et non par position.

    En y réfléchissant, je pense que cela pourrait se positionner comme sur-couche à open csv.

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    la gestion des colonnes étant géré par nom et non par position
    Est ce que ça ressemble à ce que j'ai proposé (et codé moche) dans le tutoriel "Les fichiers 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
    Test DISC gratuit : http://icauda.com/disc.php

  6. #6
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Vi un peu, peut être plus simple dans le mapping (avec des annotations).

    Exemple de classe métier :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    @FichierCsv(value = "objet_csv.txt", separateur = "\\|")
    public static class ObjetCsv {
        @BaliseCsv(value = "att_1", ordre = 0)
        private String attribut1;
     
        @BaliseCsv(value = "att_2", ordre = 1, adapter = AdapterBoolean.class)
        private Boolean attribut2;
    }
    Création du moteur (prend la liste de classe à gérer en paramètre) :
    Code :
    MoteurCsv moteur = new MoteurCsv(new ArrayList<Class<?>>(Collections.singletonList(ObjetCsv.class)));
    Exemple de lecture de fichier (stream est un inputStream) :
    Code :
    List<ObjetCsv> objets = moteur.parseInputStream(stream, ObjetCsv.class);
    Exemple d'écriture de fichier :
    Code :
    1
    2
    File file = File.createTempFile("objet_csv", "txt");
    moteur.writeFile(file, objets, ObjetCsv.class);

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    Effectivement, ça a l'air super intéressant. Du coup, en surcouche d'open csv comme tu disais, ça peut le faire, surtout dans un doa. A ressemble presque à du jpa.
    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
    Test DISC gratuit : http://icauda.com/disc.php

  8. #8
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Sur la ressemblance à du JPA, je faisait justement pas mal de JPA à l'époque ou je l'ai codé

    Sur modifier mon "String.split" par un open-csv, ça pourrait être sympa, par contre faut que je regarde open-csv pour vérifier que cela est compatible avec mon utilisation principale qui est sur une application android (taille jar, compatibilité dalvik, ...).

    (ravi d'en discuter avec quelqu'un ).

  9. #9
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    Une des missions de developpez.com est d'encourager les bonnes initiatives. En outre ta lib m'intéresse carrément. Ce que je te propose, c'est de me décontracter directement à la fin du mois (je dois finir d'abord plusieurs trucs, notamment pour devoxx, sans oublier la compta...) et on voit ce qu'on peut faire. L'idéal serait de prolonger ce tutoriel avec l'utilisation de ta lib. Il faudra juste qu'elle soit dispo avec maven et ready. D'ici là je e laisse le soin d'avancer le sujet de ton côté. N'hésite pas à me tenir au courant. En tous cas bon travail.
    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
    Test DISC gratuit : http://icauda.com/disc.php

  10. #10
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Pour la dispo avec Maven, c'est déjà le cas :
    repo : https://repository-ybonnel.forge.cloudbees.com/release
    groupId : fr.ybo
    artifactId : moteurcsv

    Je regarde pour y mettre open-csv sur la couche de lecture de csv pour la rendre plus robuste.

    Voici mon mail : ybonnel@gmail.com

    On se verra sans doute à Devoxx France

  11. #11
    Membre du Club
    Homme Profil pro Yan Bonnel
    Développeur Java
    Inscrit en
    mai 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Homme Yan Bonnel
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : mai 2006
    Messages : 10
    Points : 43
    Points
    43

    Par défaut

    Voici l'implémentation de l'article avec MoteurCsv :
    https://github.com/ybonnel/notes4_do.....useMoteurCsv

  12. #12
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    Grosse mise-à-jour :
    http://thierry-leriche-dessirier.dev...sv-5-min/#L1-C

    Ajout d'un exemple d'utilisation de la lib MoteurCsv en annexe.
    http://thierry-leriche-dessirier.dev...sv-5-min/#L6-C
    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
    Test DISC gratuit : http://icauda.com/disc.php

  13. #13
    Rédacteur
    Avatar de thierryler
    Homme Profil pro Thierry Leriche-Dessirier
    Inscrit en
    octobre 2007
    Messages
    3 416
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Leriche-Dessirier
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 416
    Points : 9 286
    Points
    9 286

    Par défaut

    màj : 12 juillet 2012

    La version 1.2.0 de la lib MoteurCsv avec un objet "Resultat" en retour de la méthode "parseInputStream()" et la méthode "parseFileAndInsert()" qui ressemble à s'y méprendre à de la programmation fonctionnelle.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private final static char SEPARATOR = ';';
    private final static String RESOURCES_PATH = "src/main/resources/";
    private final static String ELEVES_FILE_NAME = "eleves.csv";
     
    // Moteur CSV
    private final static MoteurCsv moteurCsv = new MoteurCsv(Eleve.class);
     
    @Override
    public List<Eleve> findEleves() {
     
    	Resultat<Eleve> resultat =  moteurCsv.parseInputStream(new FileInputStream(new File(RESOURCES_PATH + ELEVES_FILE_NAME)), Eleve.class);
    	List<Eleve> eleves = resultat.getObjets();
    et

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    final List<Eleve> eleves = newArrayList(); // Static factory Guava
    moteurCsv.parseFileAndInsert(fr, Eleve.class, new InsertObject<Eleve>() {
     
    	@Override
    	public void insertObject(Eleve eleve) {
    		foo(eleve); // Faire un truc sur l'eleve.
    		...
    		result.add(eleve); // Mettre dans la liste, si besoin.
    		...
    		System.out.println(eleve); // Un petit sysout pour le plaisir.
    	}
    });
    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
    Test DISC gratuit : http://icauda.com/disc.php

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •