From 494d349fb67be74da49caae2794fda702f595fb4 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 16:29:11 +0000
Subject: [PATCH] rename packages
---
fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 178 insertions(+), 0 deletions(-)
diff --git a/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java
new file mode 100644
index 0000000..1e47594
--- /dev/null
+++ b/fdx_generator/src/main/java/com/megatim/fdxgenerator/utilities/ImportData.java
@@ -0,0 +1,178 @@
+/*
+ * 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.fdxgenerator.utilities;
+
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author mela
+ */
+public class ImportData {
+
+ /**
+ * Méthode qui parse le fichier csv et en extrait les données
+ *
+ * @param datIm
+ * @return
+ */
+ public static <T> List<T> importDataFromCsvFile(DataToImport<T> datIm) throws AttributeFormatException {
+ FileReader reader = null;
+ List<String[]> datas = new ArrayList<>();
+ List<T> listeToReturn = new ArrayList<>();
+
+ if (datIm != null) {
+ try {
+ reader = new FileReader(datIm.getFile() + "");
+ LineNumberReader lineReader = new LineNumberReader(reader);
+ String line = "";
+
+ while ((line = lineReader.readLine()) != null) {
+ String[] row = line.split(datIm.getRowDelimiter());
+ for (String r : row) {
+ String[] values = new String[datIm.getFields().size()];
+ String[] columns = r.split(datIm.getColumnDelimiter());
+
+ int ss = 0;
+ while (ss < datIm.getFields().size() && ss < columns.length) {
+ values[ss] = columns[ss];
+ ss++;
+ }
+ datas.add(values);
+ }
+
+ }
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } catch (IOException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } finally {
+ try {
+ reader.close();
+ } catch (IOException | NullPointerException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ if (!datas.isEmpty()) {
+
+ //tous les champs du type paramétré
+ Field[] fields = datIm.getType().getDeclaredFields();
+
+ // mettre les champs du type paramétré dans une map afin de faciliter leur accès
+ Map<String, Field> fieldsToMap = fieldsToMap(fields);
+ datas.forEach(d -> {
+ try {
+ T obj = datIm.getType().newInstance();
+ Map<String, String> map = tabToMap(datIm.getFields(), d);
+ for (Field field : fields) {
+ String fieldName = field.getName();
+ if (map.containsKey(fieldName) && fieldsToMap.containsKey(fieldName)) {
+ try {
+ Object converted = convertToPrimitive(field, map.get(fieldName));
+ Method method = new PropertyDescriptor(fieldName, datIm.getType()).getWriteMethod();
+ method.invoke(obj, converted);
+ } catch (IntrospectionException | IllegalAccessException | InvocationTargetException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } catch (IllegalArgumentException | ClassCastException ex) {
+ throw new AttributeFormatException("Erreur de type sur le champ " + fieldName);
+ }
+ }
+ }
+ listeToReturn.add(obj);
+ } catch (InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(ImportData.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+
+ });
+ }
+ }
+ return listeToReturn;
+ }
+
+ /**
+ * Méthode qui met les libellés des colonnes et leurs valeurs
+ * correspondantes dans une map
+ *
+ * @param titles : ensemble des noms de colonnes
+ * @param values : ensemble des données
+ * @return : rentourne une map (clé,valeur) = (nom_de_la_colonne,
+ * valeur_colonne)
+ */
+ private static Map<String, String> tabToMap(List<String> titles, String[] values) {
+ Map<String, String> map = new HashMap<>();
+ for (int i = 0; i < titles.size(); i++) {
+ map.put(titles.get(i), values[i]);
+ }
+
+ return map;
+ }
+
+ /**
+ * Méthode qui met un tableau de Field dans une
+ * map<nom_du_champ,objet représentant_le_champ>
+ * afin de faciliter leur accès
+ *
+ * @param fields
+ * @return
+ */
+ private static Map<String, Field> fieldsToMap(Field[] fields) {
+ Map<String, Field> map = new HashMap<>();
+ for (Field f : fields) {
+ map.put(f.getName(), f);
+ }
+
+ return map;
+ }
+
+ /**
+ * Méthode qui fait la conversion de la donnée extraite vers un type
+ * primitif
+ *
+ * @param field : objet contenant les informations sur le type auquel
+ * appartient le champ de la donnée extraite
+ * @param value : donnée à convertir
+ * @return : retourne un String si le type du champ ne figure pas dans la
+ * liste ci-dessus
+ */
+ private static Object convertToPrimitive(Field field, String value) {
+ Object obj = value;
+
+ if (field.getType().isAssignableFrom(Integer.class)
+ || field.getType().isAssignableFrom(int.class)) {
+ obj = Integer.parseInt(value);
+ } else if (field.getType().isAssignableFrom(Double.class)
+ || field.getType().isAssignableFrom(double.class)) {
+ obj = Double.parseDouble(value);
+ } else if (field.getType().isAssignableFrom(java.math.BigDecimal.class)) {
+ obj = new java.math.BigDecimal(value);
+ } else if (field.getType().isAssignableFrom(Float.class)
+ || field.getType().isAssignableFrom(float.class)) {
+ obj = Float.valueOf(value);
+ } else if (field.getType().isAssignableFrom(Long.class)
+ || field.getType().isAssignableFrom(long.class)) {
+ obj = Long.parseLong(value);
+ } else if (field.getType().isAssignableFrom(Boolean.class)
+ || field.getType().isAssignableFrom(boolean.class)) {
+ Boolean.parseBoolean(value);
+ }
+
+ return obj;
+ }
+}
--
Gitblit v1.10.0