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