/* * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template */ package com.megatim.queryadhoc.utils; import com.megatim.queryadhoc.model.DbColumnDescription; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * * @author ASUS */ public class FileDataReader { private FileDataReader() { } public static List> readFile(List columnsDescription, File dataFile) throws Exception { List> data = new ArrayList<>(); //Ranger les olonnes par ordre croissant de position Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition())); //On détermine l'encodage du fichier Charset charset = CommonUtilities.getCharset(dataFile); try ( FileInputStream fis = new FileInputStream(dataFile); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) { String line; while ((line = reader.readLine()) != null) { LinkedHashMap dataLine = getLine(line, columnsDescription); data.add(dataLine); } } return data; } private static LinkedHashMap getLine(final String line, final List columnsDescription) { LinkedHashMap dataLine = new LinkedHashMap<>(); int index = 0; for (DbColumnDescription c : columnsDescription) { //traitement des colonnes du type fichier String data = line.substring(index, index + c.getTaille()); dataLine.put(c.getName(), data); index += c.getTaille(); } return dataLine; } }