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-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java |   83 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java
new file mode 100644
index 0000000..0ca2619
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java
@@ -0,0 +1,83 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordColumnDto;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableauBordRequestError {
+
+    private final Map<String, ColumnDefinition> columnNameToColumnDefinitions;
+    private final TableauBordRequest tableauBordRequest;
+
+    public TableauBordRequestError(TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions) {
+        this.tableauBordRequest = tableauBordRequest;
+        this.columnNameToColumnDefinitions = columnDefinitions
+                .stream()
+                .collect(Collectors.toMap(c -> c.getName(), c -> c));
+    }
+
+    public String error() {
+
+        int index = 1;
+
+        for (TableConfigurationDto configuration : tableauBordRequest.getTableConfigurations()) {
+
+            if (!configuration.getFonctionAggregation().equals(FonctionAggregation.COUNT)) {
+
+                if (configuration.getTargetedColumn() == null) {
+                    return "La colonne d'aggregation est obligatoire pour la configuration " + index;
+                }
+
+                if (!hasColumnDefinition(configuration.getTargetedColumn())) {
+                    return "La colonne d'aggregation n'est pas présente dans la définition de ce fichier pour la configuration " + index;
+                }
+
+                if (!isNumeric(configuration.getTargetedColumn())) {
+                    return "La colonne d'aggregation n'est pas numérique " + index;
+                }
+            }
+
+            if (configuration.getTypeResultatConfiguration().equals(TypeResultatConfiguration.HISTOGRAMME)
+                    || configuration.getTypeResultatConfiguration().equals(TypeResultatConfiguration.CAMEMBERT)) {
+
+                if (configuration.getGroupingColumns() == null || configuration.getGroupingColumns().isEmpty()) {
+                    return "Il faut au moins une colonne de groupage pour la configuration " + index;
+                }
+
+                for (TableauBordColumnDto column : configuration.getGroupingColumns()) {
+                    if (!hasColumnDefinition(column)) {
+                        //ERREUR LA COLONNE D'AGGREGATION N'EST PAS DEFINIT POUR CE TYPE DE FICHIER
+                        return "La colonne de groupage " + column.getName() + " n'appartient pas à la définition du fichier pour la configuration " + index;
+                    }
+                }
+
+            }
+
+            index++;
+
+        }
+
+        return "";
+    }
+
+    private boolean hasColumnDefinition(TableauBordColumnDto column) {
+        return columnNameToColumnDefinitions.containsKey(column.getName());
+    }
+
+    private boolean isNumeric(TableauBordColumnDto column) {
+        return column.getTypeDonnee().equals(TypeDonnee.NUMERIQUE)
+                || column.getTypeDonnee().equals(TypeDonnee.DECIMAL);
+    }
+
+}

--
Gitblit v1.10.0