Merci pour vos réponses, je suis passé par une autre stratégie (grâce à Camel Simple).
Je souhaite découper le ligne une fois avec un numéro de commande unique deux par deux.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| private void ExtractOrderFromBAC02(ProducerTemplate producerTemplate, InputStream content, String endpoint, String fileName, HashMap<String, Object> headers){
ArrayList<String> list = new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(content));
String line;
long numSplits = 2;
int sourcesize=0;
int nof=0;
int number = 800;
try {
while((line = br.readLine()) != null){
sourcesize++;
list.add(line);
}
System.out.println("Lines in the file: " + sourcesize);
double numberFiles = (sourcesize/numSplits);
int numberFiles1=(int)numberFiles;
if(sourcesize<=2) {
nof=1;
}
else {
nof=numberFiles1+1;
}
System.out.println("No. of files to be generated :"+nof);
for (int j=1;j<=nof;j++) {
number++;
String Filename = ""+ number;
System.out.println(Filename);
StringBuilder builder = new StringBuilder();
for (String value : list) {
builder.append("/n"+value);
}
producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename);
}
}
} catch (IOException e) {
e.printStackTrace();
}
finally{
try {
if(br != null)br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} |
Je me sers du
producerTemplate.sendBodyAndHeader(endpoint, builder.toString(), "CamelFileName",Filename);
endpoint ==> Ma destination
"CamelFileName",Filename ==> Pour le nom de mon fichier
builder.toString() ==> Le document à renvoyer.
Avec mon code, j'ai bien 3 fichiers mais à chaque fois avec l'intégralité du document et sans retour chariot.
Je souhaiterai donc découper mon ArrayList toutes les 2 occurrences mais je ne trouve pas comment je peux faire :s, j'ai tenté des boucles sur nombre de lignes, ça ne fonctionne pas...
Merci d'avance
Partager