From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation

---
 fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java |  127 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 127 insertions(+), 0 deletions(-)

diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java
new file mode 100644
index 0000000..f4fa5e7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java
@@ -0,0 +1,127 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.JsonTypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonApiTypeFichierInsertData implements JsonTypeFichierInsertMetaData {
+
+    private final String tableName;
+    private final Map<String, Object> entity;
+
+    public JsonApiTypeFichierInsertData(String tableName, Map<String, Object> entity) {
+        this.tableName = tableName;
+        this.entity = entity;
+    }
+
+    @Override
+    public String tableName() {
+        return tableName;
+    }
+
+    /**
+     * Dans cette méthode on ne s'intéresse qu'aux champs de type primitif
+     *
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public TypeFichierDataRow row() throws Exception {
+        return primitiveValues(entity);
+    }
+
+    @Override
+    public List<String> columnNames() throws Exception {
+        return entity.entrySet()
+                .stream()
+                .filter(p -> !(p.getValue() instanceof Map) && !(p.getValue() instanceof List))
+                .map(e -> e.getKey())
+                .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * Dans cette méthode on ne s'intéresse qu'aux champs de type Map ou List
+     *
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public List<JsonTypeFichierInsertMetaData> children() throws Exception {
+        Map<String, Object> mapOfObjectElts = new HashMap<>();
+
+        for (Map.Entry<String, Object> e : entity.entrySet()) {
+            if ((e.getValue() instanceof Map) || (e.getValue() instanceof List)) {
+                mapOfObjectElts.put(e.getKey(), e.getValue());
+            }
+        }
+        return children(mapOfObjectElts);
+    }
+
+    private TypeFichierDataRow primitiveValues(Map<String, Object> entity) {
+        Map<String, Object> mapOfPrimitiveElts = new HashMap<>();
+
+        for (Map.Entry<String, Object> e : entity.entrySet()) {
+            if (!(e.getValue() instanceof Map) && !(e.getValue() instanceof List)) {
+                mapOfPrimitiveElts.put(e.getKey(), e.getValue());
+            }
+        }
+        if (!mapOfPrimitiveElts.isEmpty()) {
+            return new DefaultTypeFichierDataRow(mapOfPrimitiveElts);
+        }
+        return null;
+    }
+
+    private List<JsonTypeFichierInsertMetaData> children(Map<String, Object> mapOfObjectElts) {
+        List<JsonTypeFichierInsertMetaData> children = new ArrayList<>();
+
+        for (Map.Entry<String, Object> entry : mapOfObjectElts.entrySet()) {
+
+            if (entry.getValue() instanceof List) {
+                children.addAll(listValues(entry.getKey(), entry.getValue()));
+            } else if (entry.getValue() instanceof Map) {
+                JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + entry.getKey().toLowerCase(), (Map<String, Object>) entry.getValue());
+                children.add(metaData);
+            }
+        }
+        return children;
+    }
+
+    private List<JsonTypeFichierInsertMetaData> listValues(String key, Object value) {
+        List<JsonTypeFichierInsertMetaData> children = new ArrayList<>();
+        List valueList = (List) value;
+
+        if (!valueList.isEmpty()) {
+            Object obj = valueList.get(0);
+
+            //Liste d'objets
+            if (obj instanceof Map) {
+                for (Object o : valueList) {
+                    JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + key.toLowerCase(), (Map<String, Object>) o);
+                    children.add(metaData);
+                }
+            } else {
+                //Liste de primitifs
+                for (Object o : valueList) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put(key.toLowerCase(), o);
+                    JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + key.toLowerCase(), map);
+                    children.add(metaData);
+                }
+            }
+        }
+        return children;
+    }
+}

--
Gitblit v1.10.0