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/helper/TableauBordHandlerImpl.java | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 276 insertions(+), 0 deletions(-)
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java
new file mode 100644
index 0000000..3dce036
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java
@@ -0,0 +1,276 @@
+package com.megatim.fdxconsultation.core.impl.helper;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableauBordHandler;
+import com.megatim.fdxconsultation.core.ifaces.stats.CriteriaEntityPersistedManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableConfigurationManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordColumnManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordHandlerImpl implements TableauBordHandler {
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private CriteriaEntityPersistedManager criteriaEntityPersistedManager;
+
+ @Inject
+ TableauBordManager tableauBordManager;
+
+ @Inject
+ private TableConfigurationManager tableConfigurationManager;
+
+ @Inject
+ private TableauBordColumnManager tableauBordColumnManager;
+
+ @Override
+ public void reconduireTableauBordValides(Referentiel previousRef, Referentiel newRef, Set<String> typeFichiersToMigrate) {
+ List<TableauBord> prevRefTableauBords = tableauBordManager.findByReferentiel(previousRef.getVersion());
+
+ try {
+ for (TableauBord t : prevRefTableauBords) {
+ if (typeFichiersToMigrate.contains(t.getTypeFichier().getCode())) {
+ createNewTableauBord(t, newRef);
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public TableauBordDto tableauBordToTableauBordDto(TableauBord tableauBord) {
+ TableauBordDto dto = new TableauBordDto();
+
+ dto.setId(tableauBord.getId());
+ dto.setDescription(tableauBord.getDescription());
+ dto.setTypeFichier(commonMapper.typeFichierToTypeFichierSlimDto(tableauBord.getTypeFichier()));
+ dto.setTypeConfiguration(tableauBord.getTypeConfiguration());
+
+ Set<TableConfigurationDto> tableConfigurationDtos = new HashSet<>();
+ tableauBord.getTableConfigurations().stream().forEach(t -> tableConfigurationDtos.add(tableConfigurationToTableConfigurationDto(t)));
+ dto.setTableConfigurations(tableConfigurationDtos);
+
+ return dto;
+ }
+
+ /**
+ * Méthode permettant de passer de TableauBordDto à TableauBord
+ *
+ * @param dto
+ * @param referentiel
+ * @return
+ */
+ @Override
+ public TableauBord tableauBordDtoToTableauBord(TableauBordDto dto, Referentiel referentiel) {
+ TableauBord tableauBord = new TableauBord();
+
+ tableauBord.setDescription(dto.getDescription());
+ tableauBord.setTypeFichier(commonMapper.typeFichierSlimDtoToTypeFichier(dto.getTypeFichier()));
+ tableauBord.setReferentiel(referentiel);
+
+ Set<TableConfiguration> tableConfigurations = new HashSet<>();
+ dto.getTableConfigurations().stream().forEach(t -> tableConfigurations.add(tableConfigurationDtoToTableConfiguration(t, dto.getTypeFichier().getCode(), referentiel.getVersion())));
+ tableauBord.setTableConfigurations(tableConfigurations);
+
+ return tableauBord;
+ }
+
+ @Override
+ public TableConfigurationDto tableConfigurationToTableConfigurationDto(TableConfiguration tableConf) {
+ TableConfigurationDto dto = new TableConfigurationDto();
+ dto.setCriterion(criteriaEntityPersistedToCriteriaEntityFromView(tableConf.getCriterion()));
+ dto.setColor(tableConf.getColor());
+ dto.setFonctionAggregation(tableConf.getFonctionAggregation());
+ dto.setGroupingColumns(mapper.setTableauBordColumnToSetTableauBordColumnDto(tableConf.getGroupingColumns()));
+ dto.setLibelle(tableConf.getLibelle());
+ dto.setTargetedColumn(mapper.tableauBordColumnToTableauBordColumnDto(tableConf.getTargetedColumn()));
+ dto.setTypeResultatConfiguration(tableConf.getTypeResultatConfiguration());
+ dto.setColor(tableConf.getColor());
+
+ return dto;
+ }
+
+ @Override
+ public void stopIfUserSpecificTableauBordExists(String codeTypeFichier, String referentielVersion, String userName) throws CommonApplicationValidationException, Exception {
+
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ criterion.setSubCriterias(Arrays.asList(
+ new CriteriaEntityFromView("typeFichier.code", codeTypeFichier, Operateur.EQUALS),
+ new CriteriaEntityFromView("user.userName", userName, Operateur.EQUALS),
+ new CriteriaEntityFromView("referentiel.version", referentielVersion, Operateur.EQUALS),
+ new CriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.USER_SPECIFIC, Operateur.EQUALS)));
+
+ List<TableauBord> tb = tableauBordManager.findAll(criterion, Arrays.asList(), Arrays.asList());
+ if (tb.stream().findFirst().isPresent()) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour le typefichier " + codeTypeFichier + ", l'utilisateur" + userName + " et le référentiel " + referentielVersion);
+ }
+ }
+
+ @Override
+ public void stopIfGlobaleTableauBordExists(String codeTypeFichier, String referentielVersion) throws Exception {
+
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ criterion.setSubCriterias(Arrays.asList(
+ new CriteriaEntityFromView("typeFichier.code", codeTypeFichier, Operateur.EQUALS),
+ new CriteriaEntityFromView("referentiel.version", referentielVersion, Operateur.EQUALS),
+ new CriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.GLOBAL, Operateur.EQUALS)
+ ));
+
+ if (tableauBordManager.findAll(criterion, Arrays.asList(), Arrays.asList()).stream().findFirst().isPresent()) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour ce typefichier et ce référentiel");
+ }
+ }
+
+ private void createNewTableauBord(TableauBord t, Referentiel referentiel) throws Exception {
+
+ try {
+ if (t.getTypeConfiguration().equals(TypeConfigurationTableauBord.USER_SPECIFIC)) {
+ stopIfUserSpecificTableauBordExists(t.getTypeFichier().getCode(), referentiel.getVersion(), t.getUser().getUserName());
+ } else {
+ stopIfGlobaleTableauBordExists(t.getTypeFichier().getCode(), referentiel.getVersion());
+ }
+ TableauBord tableauBord = tableauBord(t, referentiel);
+ tableauBordManager.save(tableauBord);
+ } catch (Exception ex) {
+ Logger.getLogger(TableauBordHandlerImpl.class.getSimpleName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ private TableauBord tableauBord(TableauBord t, Referentiel referentiel) {
+ TableauBord tableauBord = new TableauBord();
+ tableauBord.setReferentiel(referentiel);
+ tableauBord.setTypeFichier(t.getTypeFichier());
+ tableauBord.setDescription(t.getDescription());
+ tableauBord.setUser(t.getUser());
+ tableauBord.setTypeConfiguration(t.getTypeConfiguration());
+
+ for (TableConfiguration tc : t.getTableConfigurations()) {
+ TableConfiguration tableConf = new TableConfiguration();
+ tableConf.setLibelle(tc.getLibelle());
+ tableConf.setFonctionAggregation(tc.getFonctionAggregation());
+ tableConf.setTargetedColumn(newTableauBordColumn(tc.getTargetedColumn()));
+ tableConf.setTypeResultatConfiguration(tc.getTypeResultatConfiguration());
+ tableConf.setFonctionAggregationCriterion(tc.getFonctionAggregationCriterion());
+
+ CriteriaEntityPersisted cr = reconductCriteria(tc.getCriterion());
+ tableConf.setCriterion(cr);
+
+ for (TableauBordColumn tbc : tc.getGroupingColumns()) {
+ tableConf.getGroupingColumns().add(newTableauBordColumn(tbc));
+ }
+ tableauBord.getTableConfigurations().add(tableConf);
+ }
+
+ return tableauBord;
+ }
+
+ private TableauBordColumn newTableauBordColumn(TableauBordColumn column) {
+ if (column == null) {
+ return null;
+ }
+ TableauBordColumn newColumn = new TableauBordColumn();
+ newColumn.setName(column.getName());
+ newColumn.setTypeDonnee(column.getTypeDonnee());
+
+ return newColumn;
+ }
+
+ private TableConfiguration tableConfigurationDtoToTableConfiguration(TableConfigurationDto dto, String codeTypeFichier, String referentielVersion) {
+ TableConfiguration tableConf = new TableConfiguration();
+ tableConf.setFonctionAggregation(dto.getFonctionAggregation());
+ tableConf.setLibelle(dto.getLibelle());
+ tableConf.setColor(dto.getColor());
+ tableConf.setTargetedColumn(mapper.tableauBordColumnDtoToTableauBordColumn(dto.getTargetedColumn()));
+ tableConf.setGroupingColumns(mapper.setTableauBordColumnDtoToSetTableauBordColumn(dto.getGroupingColumns()));
+ tableConf.setTypeResultatConfiguration(dto.getTypeResultatConfiguration() != null ? dto.getTypeResultatConfiguration() : TypeResultatConfiguration.RECAPITULATIF);
+
+ CriteriaEntityPersisted criterionPersisted = criteriaEntityPersistedManager.constructCriteriaPersisted(codeTypeFichier, referentielVersion, dto.getCriterion());
+ tableConf.setCriterion(criterionPersisted);
+
+ return tableConf;
+ }
+
+ private CriteriaEntityPersisted reconductCriteria(CriteriaEntityPersisted criterion) {
+
+ if (criterion != null) {
+
+ if (!criterion.getSubCriterias().isEmpty()) {
+
+ CriteriaEntityPersisted finalCriterion = new CriteriaEntityPersisted();
+ List<CriteriaEntityPersisted> subCriteria = new ArrayList<>(criterion.getSubCriterias());
+ criterion.setSubCriterias(new ArrayList<>());
+ subCriteria.stream().forEach(c -> finalCriterion.getSubCriterias().add(reconductCriteria(c)));
+
+ return finalCriterion;
+
+ } else {
+
+ CriteriaEntityPersisted finalCriterion = new CriteriaEntityPersisted();
+ finalCriterion.setNomColonne(criterion.getNomColonne());
+ finalCriterion.setOperateur(criterion.getOperateur());
+ finalCriterion.setCriteriaLogicConnector(criterion.getCriteriaLogicConnector());
+
+ finalCriterion.setCriteriaDateListValue(criterion.getCriteriaDateListValue());
+ finalCriterion.setCriteriaDateLowerBound(criterion.getCriteriaDateLowerBound());
+ finalCriterion.setCriteriaDateUpperBound(criterion.getCriteriaDateUpperBound());
+ finalCriterion.setCriteriaDateValue(criterion.getCriteriaDateValue());
+
+ finalCriterion.setCriteriaNumericListValue(criterion.getCriteriaNumericListValue());
+ finalCriterion.setCriteriaNumericValue(criterion.getCriteriaNumericValue());
+ finalCriterion.setCriteriaNumericLowerBound(criterion.getCriteriaNumericLowerBound());
+ finalCriterion.setCriteriaNumericUpperBound(criterion.getCriteriaNumericUpperBound());
+
+ finalCriterion.setCriteriaStringListValue(criterion.getCriteriaStringListValue());
+ finalCriterion.setCriteriaStringValue(criterion.getCriteriaStringValue());
+ finalCriterion.setCriteriaStringLowerBound(criterion.getCriteriaStringLowerBound());
+ finalCriterion.setCriteriaStringUpperBound(criterion.getCriteriaStringUpperBound());
+
+ return finalCriterion;
+ }
+
+ } else {
+
+ return null;
+
+ }
+ }
+
+}
--
Gitblit v1.10.0