J'ai un problème à faire un stream.
J'extrait des données à partir d'un csv :
Ensuite pour que le résultat de l'import colle à mon modèle de données j'ai écrit un converter (je n'ai pas le loisir de modifier le modèle de donnée).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public Stream<T> importFichier(File file, Class<T> pojo) throws JsonProcessingException, IOException{ CsvMapper mapper = new CsvMapper(); SchemaConfiguration<T> schema = new SchemaConfiguration<T>(); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); MappingIterator<T> it = mapper.readerFor(pojo).with(schema.schemaDefinition(pojo)).readValues(bis); Stream<T> streamImport = StreamSupport.stream(Spliterators.spliteratorUnknownSize(it, Spliterator.SIZED), true); return streamImport; }
J'aimerai diminué la compléxité en me débarassant du forEach. Pour cela je voudrais mettre le code suivant dans une méthode et un faire un stream
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public List<ClasseModele> PojoConverter() throws JsonProcessingException, IOException{ Stream<Pojo> pojoListe = initImportCsv(); List<ClasseModele> prReferentielListe = null; for (Pojo pojo : pojoListe.distinct().collect(Collectors.toList())) { ClasseModele cm = new ClasseModele(); cm.setProp1(pojo.getProp1); cm.setProp2(pojo.getProp2); prReferentielListe.add(prReferentiel); } return prReferentielListe; }
Ainsi je pourrais mapper ce stream dans mon PojoConverter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ClasseModele cm = new ClasseModele(); cm.setProp1(pojo.getProp1); cm.setProp2(pojo.getProp2);
Seulement j'ai du mal écrire cette fameuse méthode...
Si vous avez des suggestions je suis preneur.
Je vous remercie d'avance
Partager