Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Modularisation (OSGi, SCA...)
Modularisation (OSGi, SCA...) Forum d'entraide sur les architectures modulaires à base de composants et services (OSGi, SCA...). Avant de poster -> Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/08/2012, 11h55   #1
SuzaneD
Invité de passage
 
Femme
Étudiant
Inscription : août 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 5
Points : 0
Points : 0
Par défaut [Apache Camel] Lecture de Fichiers

Bonjour,

Je voudrais savoir comment faire la lecture de chaque fichier de mon arborescence sur D:\ En Apache Camel . Pour parcourir cet arbre , j'utilise :

from("file://D:/Fichier_Technique?recursive=true")

Ce que je voudrais c'est pouvoir accéder à chaque fichier de ce répertoire, l'ouvrir et stocker son contenu dans une BDD mysql .

Je voudrais également savoir , quelle est la fonction qui permet d'obtenir le nom d'un fichier ?

Si quelqu'un a une idée de comment je peux faire cela ?
SuzaneD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 12h19   #2
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
bonjour
Code java :
from("file://D:/Fichier_Technique?recursive=true")
c'est la bonne technique. recursive va rechercher tous les fichiers dans tous les sous dossier
j'ajouterais un preMove et move pour éviter de mélanger les fichiers

Code java :
from("file://D:/Fichier_Technique?recursive=true&premove=../inprogresss&move=../complete")
ainsi chaque fichier en cour de traitement sera placé dans inprogress et une fois le traitement fini déplacé dans complete.


à chaque activation tu va recevoir un fichier dans les entêtes du message tu vas avoir CamelFileName et quelques autres entêtes il te donne le chemin du fichier que tu a récupéré voir "File consumer only" dans la doc camel file2

Code java :
1
2
3
from("file://D:/Fichier_Technique?recursive=true&premove=../inprogresss&move=../complete")
.log("$CamelFileName")
.to("log:content")

attention si tu envisage de passer à ftp pour récupérer le contenu du fichier il faut faire un convertTo(String.class)
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2012, 13h43   #3
SuzaneD
Invité de passage
 
Femme
Étudiant
Inscription : août 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 5
Points : 0
Points : 0
Merci pour tes réponses .

Enfait pour mieux t'expliquer mon problème. Dans ma BDD , j'ai stocké une expression régulière . Ce qu'il faudrait c'est que quand je parcours mon arborescence, il faut que je puisse accéder à chaque nom de fichiers pour pouvoir le tester avec la Regex . Et je ne sais pas comment ca se fait avec Apache Camel ? Une fois que le nom du fichier est validé , il faut que je puisse le lire : c'est a dire : ouvrir le fichier et stocker son contenu en BDD . Et je voudrais savoir comment ca se fait en ligne de code ?
SuzaneD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 15h02   #4
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
camel n'est pas fait pour ça

camel fonctionne sur un mode événementiel
lorsqu'un fichier est ajouté dans un dossier camel le capte et le transmet dans le process

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2012, 15h34   #5
SuzaneD
Invité de passage
 
Femme
Étudiant
Inscription : août 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 5
Points : 0
Points : 0
Je te remercie pour toutes tes réponses
SuzaneD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 18h00   #6
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
dans camel tu as pour chaque route la possibilité de définir des processor des bean qui te permettent de manipuler le message
un bean est le plus simple à mettre en oeuvre

tu définie une classe avec une méthode
Code java :
1
2
3
4
5
6
7
8
9
class myBean {
   public void aMethod(Exchange exchange) {
      Message msg = exchange.getIn();
      String fileName = msg.getHeader("CamelFileName");
 
 
      ....
   } 
}

dans ta route tu fais simplement
Code java :
from(url).bean(myBean.class);
pour chaque message capté par le from ta méthode aMethod sera appellée.

tu peux récupérer tous les headers avec msg.getHeaders() tu peux ajouter tous les headers que tu veux
tu peux récupérer le contenu du message avec msg.getBody()
enfin tu peux modifier le body si tu en as besoin.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/08/2012, 16h08   #7
SuzaneD
Invité de passage
 
Femme
Étudiant
Inscription : août 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 5
Points : 0
Points : 0
Par défaut Re : Apache Camel

Bonjour,

Quelqu'un sait il comment on fait pour ajouter des enregistrements dans une BDD mySql à partir de Camel ?

Quelles sont les dépendances que l'on devrait rajouter ? Comment ajouter le nom de la base de données dans Camel ? COmment créer la requete sql ( insert) , etc .


Je vous remercie infiniment ^^
SuzaneD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2012, 16h42   #8
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
lis la doc camel jdbc et camel jpa

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2012, 10h52   #9
SuzaneD
Invité de passage
 
Femme
Étudiant
Inscription : août 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2012
Messages : 5
Points : 0
Points : 0
Par défaut Re : Apache Camel

Bonjour Sekaijin,

Est ce qu'il y a une fonction dans Camel qui permet de lire un fichier dans un répertoire une et une seule fois. Quand j'exécute mon code , Je remarque que que les fichiers au sein d'un même répertoire sont lues plusieurs fois ?

from("file://D:/Project/Repertory?recursive=true&noop=true&idempotent=true")

En principe la fonction idempotent évite de lire le même fichier plus d'une fois , mais dans mon cas ca ne marche pas ! Un même fichier peut être lu plusieurs fois .

MErci encore une fois
SuzaneD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2013, 15h57   #10
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
noop=false
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h42.


 
 
 
 
Partenaires

Hébergement Web