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-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java | 131 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 131 insertions(+), 0 deletions(-)
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java
new file mode 100644
index 0000000..a0affee
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java
@@ -0,0 +1,131 @@
+/*
+ * 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.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionChecker;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProduction;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableDefinitionCheckerImpl implements TableDefinitionChecker {
+
+ @Override
+ public boolean isSame(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef, List<NatureProductionFichier> natureProductionFichiers) {
+ if (!previousRefTableDef.getCodeTypeFichier().equals(nextRefTableDef.getCodeTypeFichier())) {
+ throw new IllegalArgumentException();
+ }
+ return isSameNatureProductionFichier(previousRefTableDef.getReferentielVersion(), nextRefTableDef.getReferentielVersion(), natureProductionFichiers)
+ && isSame(previousRefTableDef, nextRefTableDef)
+ && isSame(nextRefTableDef.getColumnDefinitions(), previousRefTableDef.getColumnDefinitions());
+ }
+
+ private boolean isSameNatureProductionFichier(String refVersion, String previousRef, List<NatureProductionFichier> natureProductionFichiers) {
+ Optional<NatureProductionFichier> natureProdFichOpt = natureProductionFichiers.stream().filter(p -> p.getReferentiel().getVersion().equals(refVersion)).findFirst();
+ Optional<NatureProductionFichier> previousNatureProdFichOpt = natureProductionFichiers.stream().filter(p -> p.getReferentiel().getVersion().equals(previousRef)).findFirst();
+
+ if (natureProdFichOpt.isPresent() && previousNatureProdFichOpt.isPresent()) {
+ return natureProdFichOpt.get().getNatureProduction().equals(previousNatureProdFichOpt.get().getNatureProduction());
+ } else if (!natureProdFichOpt.isPresent() && !previousNatureProdFichOpt.isPresent()) {
+ return true;
+ } else {
+ if (natureProdFichOpt.isPresent()) {
+ return natureProdFichOpt.get().getNatureProduction().equals(NatureProduction.REFERENTIELLE);
+ } else {
+ return previousNatureProdFichOpt.get().getNatureProduction().equals(NatureProduction.REFERENTIELLE);
+ }
+ }
+ }
+
+ private boolean isSame(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ return isSameColumnDelimiter(previousRefTableDef, nextRefTableDef)
+ && isSameLineDelimiter(previousRefTableDef, nextRefTableDef)
+ && isSameHeaderPresent(previousRefTableDef, nextRefTableDef);
+ }
+
+ private boolean isSameColumnDelimiter(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getColumnDelimiter() != null && nextRefTableDef.getColumnDelimiter() != null) {
+ return previousRefTableDef.getColumnDelimiter().equals(nextRefTableDef.getColumnDelimiter());
+ } else {
+ return previousRefTableDef.getColumnDelimiter() == null && nextRefTableDef.getColumnDelimiter() == null;
+ }
+ }
+
+ private boolean isSameLineDelimiter(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getLineDelimiter() != null && nextRefTableDef.getLineDelimiter() != null) {
+ return previousRefTableDef.getLineDelimiter().equals(nextRefTableDef.getLineDelimiter());
+ } else {
+ return previousRefTableDef.getLineDelimiter() == null && nextRefTableDef.getLineDelimiter() == null;
+ }
+ }
+
+ private boolean isSameHeaderPresent(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getHeaderPresent() != null && nextRefTableDef.getHeaderPresent() != null) {
+ return previousRefTableDef.getHeaderPresent().equals(nextRefTableDef.getHeaderPresent());
+ } else {
+ return previousRefTableDef.getHeaderPresent() == null && nextRefTableDef.getHeaderPresent() == null;
+ }
+ }
+
+ private boolean isSame(List<ColumnDefinition> newRefColumnDef, List<ColumnDefinition> oldRefColumnDef) {
+ boolean isSame = true;
+
+ if (newRefColumnDef.size() != oldRefColumnDef.size()) {
+ return false;
+ }
+ Map<String, ColumnDefinition> currentRefColDefToMap = newRefColumnDef.stream().collect(Collectors.toMap(ColumnDefinition::getName, Function.identity()));
+
+ for (ColumnDefinition c : oldRefColumnDef) {
+ ColumnDefinition oldColDef = currentRefColDefToMap.get(c.getName());
+
+ if (oldColDef == null) {
+ isSame = false;
+ break;
+ }
+
+ isSame = isSameFormatDate(c, oldColDef)
+ && isSamePosition(c, oldColDef)
+ && isSameTypeDonnee(c, oldColDef)
+ && isSameTaille(c, oldColDef)
+ && isSameTaillePartieDecimale(c, oldColDef);
+
+ if (!isSame) {
+ break;
+ }
+ }
+ return isSame;
+ }
+
+ private boolean isSameFormatDate(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return (newColDef.getFormatDate() == null ? oldColDef.getFormatDate() == null : newColDef.getFormatDate().trim().equalsIgnoreCase(oldColDef.getFormatDate()));
+ }
+
+ private boolean isSamePosition(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getPosition() == oldColDef.getPosition();
+ }
+
+ private boolean isSameTypeDonnee(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return (newColDef.getTypeDonnee() == null ? oldColDef.getTypeDonnee() == null : newColDef.getTypeDonnee().trim().equalsIgnoreCase(oldColDef.getTypeDonnee()));
+ }
+
+ private boolean isSameTaille(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getTaille() == oldColDef.getTaille();
+ }
+
+ private boolean isSameTaillePartieDecimale(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getTaillePartieDecimale() == oldColDef.getTaillePartieDecimale();
+ }
+}
--
Gitblit v1.10.0