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/api/token/ApiTokenManagerImpl.java | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 232 insertions(+), 0 deletions(-)
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java
new file mode 100644
index 0000000..78f22fb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java
@@ -0,0 +1,232 @@
+package com.megatim.fdxconsultation.core.impl.api.token;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.google.common.hash.Hashing;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.jms.messages.ApiTokenMessage;
+import com.megatim.fdxcommons.model.jms.messages.ApiTokenMessageType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.api.token.ApiTokenManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.api.token.ApiTokenDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.reporting.model.api.token.ApiTokenReporting;
+import com.megatim.fdxconsultation.model.api.token.ApiTokenStatut;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.ApiTokenSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.service.AuthenticationTokenService;
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.CdiCamelContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ApiTokenManagerImpl extends AbstractGenericManager<ApiToken, Long> implements ApiTokenManager {
+
+ @EJB
+ private ApiTokenDAO dao;
+
+ @Inject
+ private AuthenticationTokenService authenticationTokenService;
+
+ @Inject
+ private CdiCamelContext camelContext;
+
+ @Inject
+ private MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public GenericDAO<ApiToken, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String addAndGetToken(ApiToken apiToken, User connectedUser) {
+ if (dao.getByCodeParticipant(apiToken.getParticipant()) != null) {
+ throw new CommonApplicationValidationException("Le participant sélectionné possède déjà un mot de passe généré.");
+ }
+
+ String token = authenticationTokenService.issueToken(apiToken.getParticipant().getCode());
+ apiToken.setToken(Hashing.sha256().hashString(token, StandardCharsets.UTF_8).toString());
+
+ apiToken.setDateCreation(new Date());
+ apiToken.setTypeOperation(TypeOperation.AJOUTER);
+ apiToken.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+ save(apiToken);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setToken(apiToken.getToken());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.ADD);
+ sendMessage(apiTokenMessage);
+
+ return token;
+ }
+
+ @Transactional
+ @Override
+ public String updateAndGetToken(Long id, ApiToken apiToken, User connectedUser) {
+ ApiToken entityFromDB = find(getEntityIdName(),id);
+
+ //On génère le token
+ String token = authenticationTokenService.issueToken(entityFromDB.getParticipant().getCode());
+ entityFromDB.setToken(Hashing.sha256().hashString(token, StandardCharsets.UTF_8).toString());
+
+ entityFromDB.setDateDerniereModification(new Date());
+ entityFromDB.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+
+ save(entityFromDB);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(entityFromDB.getParticipant().getCode());
+ apiTokenMessage.setToken(entityFromDB.getToken());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.UPDATE);
+ sendMessage(apiTokenMessage);
+
+ return token;
+ }
+
+ private void sendMessage(ApiTokenMessage apiTokenMessage) {
+ ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+ producerTemplate.sendBody("direct:" + AppCommonContext.TOKEN_GENERATION_DIRECT, apiTokenMessage);
+ }
+
+ @Override
+ public ApiToken lock(Long id, User connectedUser) {
+ ApiToken apiToken = find(getEntityIdName(),id);
+ apiToken.setApiTokenStatut(ApiTokenStatut.LOCKED);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.LOCKED);
+
+ //Envoi du message à l'API Web
+ sendMessage(apiTokenMessage);
+
+ return update(id, apiToken);
+ }
+
+ @Override
+ public ApiToken unLock(Long id, User connectedUser) {
+ ApiToken apiToken = find(getEntityIdName(),id);
+ apiToken.setApiTokenStatut(ApiTokenStatut.UNLOCKED);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.UNLOCKED);
+
+ //Envoi du message à l'API Web
+ sendMessage(apiTokenMessage);
+
+ return update(id, apiToken);
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false );
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<ApiTokenReporting> getClazz() {
+ return ApiTokenReporting.class;
+ }
+
+ @Override
+ public List<ApiTokenReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToApiTokenReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList(new OrderByDefinition(getEntityIdName(), OrderByType.DESC))));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<ApiToken, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ @Override
+ public void beforeAdd(ApiToken entity, User connectedUser) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public void beforeRemove(ApiToken entity, User connectedUser) {
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+ entity.setDateSuppression(new Date());
+ entity.setUtilisateurSuppression(connectedUser.getUserName());
+ }
+
+ @Override
+ public void beforeModify(ApiToken actualEntity, ApiToken requestEntity, User connectedUser) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public ApiTokenDto mapToDto(ApiToken entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public ApiTokenDto mapToDetailDto(ApiToken entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(ApiTokenSearch searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
--
Gitblit v1.10.0