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-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 156 insertions(+), 0 deletions(-)
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
new file mode 100644
index 0000000..9f61584
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
@@ -0,0 +1,156 @@
+/*
+ * 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.fdxconsultation.dao.impl.log;
+
+import com.megatim.fdxconsultation.dao.ifaces.log.ApiUserActionLogDAO;
+import com.megatim.fdxconsultation.dao.impl.log.util.QueryExtendsWithApiUserActionSummarySearch;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatData;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatDto;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.TypedQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ApiUserActionLogDAOImpl implements ApiUserActionLogDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ApiUserActionLog> getManagedEntityClass() {
+ return (ApiUserActionLog.class);
+ }
+
+ @Override
+ public ApiUserActionLog getById(Long id) {
+
+ Query query = em.createQuery("SELECT u FROM ApiUserActionLog u WHERE u.id = :id");
+ query.setParameter("id", id);
+
+ Optional<ApiUserActionLog> optionalLog = query.getResultList().stream().findFirst();
+ return optionalLog.isPresent() ? optionalLog.get() : null;
+ }
+
+ @Override
+ public List<UserActionStatDto> getByStatut(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+ String selectQueryString = "SELECT u.status, COALESCE(COUNT(u.status), 0) FROM ApiUserActionLog u";
+ String whereQueryString = "";
+ String groupQueryString = "GROUP BY u.status";
+ List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+ List<UserActionStatDto> scalarResults = new ArrayList<>();
+ liste.stream().forEach(tab -> {
+ UserActionStatDto scalar = new UserActionStatDto();
+ scalar.setLibelle(tab[0].toString());
+ scalar.setValue(Long.valueOf(tab[1].toString()));
+ scalarResults.add(scalar);
+ });
+ return scalarResults;
+ }
+
+ @Override
+ public List<UserActionStatData> getByStatutAndUserName(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+ String selectQueryString = "SELECT u.userName, u.status, COALESCE(COUNT(u.status), 0) FROM ApiUserActionLog u";
+ String whereQueryString = "WHERE u.userName IS NOT NULL AND u.status IS NOT NULL";
+ String groupQueryString = "GROUP BY u.userName, u.status";
+ List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+ Map<String, List<UserActionStatDto>> userNameToUserActionStatDto = new HashMap<>();
+
+ liste.stream().filter(tab -> tab[0] != null && tab[1] != null).forEach(tab -> {
+
+ String key = tab[0].toString();
+
+ final UserActionStatDto d = new UserActionStatDto();
+ d.setLibelle(tab[1].toString());
+ d.setValue(Long.valueOf(tab[2].toString()));
+
+ if (!userNameToUserActionStatDto.containsKey(key)) {
+
+ List<UserActionStatDto> data = new ArrayList<>();
+ data.add(d);
+ userNameToUserActionStatDto.put(key, data);
+
+ } else {
+
+ List<UserActionStatDto> data = userNameToUserActionStatDto.get(key);
+ data.add(d);
+
+ userNameToUserActionStatDto.put(key, data);
+
+ }
+ });
+
+ return userNameToUserActionStatDto.entrySet().stream().map(e -> {
+ final UserActionStatData actionStatData = new UserActionStatData();
+ actionStatData.setLibelle(e.getKey());
+ actionStatData.setData(e.getValue());
+ return actionStatData;
+ }).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<UserActionStatData> getByStatutAndPath(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+
+ String selectQueryString = "SELECT u.relativePath, u.status, COUNT(u.status) FROM ApiUserActionLog u";
+ String whereQueryString = "";
+ String groupQueryString = "GROUP BY u.relativePath, u.status";
+ List<Object[]> liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList();
+
+ Map<String, List<UserActionStatDto>> userNameToUserActionStatDto = new HashMap<>();
+
+ liste.stream().forEach(tab -> {
+
+ String key = tab[0].toString();
+
+ UserActionStatDto d = new UserActionStatDto();
+ d.setLibelle(tab[1].toString());
+ d.setValue(Long.valueOf(tab[2].toString()));
+
+ if (!userNameToUserActionStatDto.containsKey(key)) {
+
+ List<UserActionStatDto> data = new ArrayList<>();
+ data.add(d);
+ userNameToUserActionStatDto.put(key, data);
+
+ } else {
+
+ List<UserActionStatDto> data = userNameToUserActionStatDto.get(key);
+ data.add(d);
+
+ userNameToUserActionStatDto.put(key, data);
+
+ }
+ });
+
+ return userNameToUserActionStatDto.entrySet().stream().map(e -> {
+ UserActionStatData actionStatData = new UserActionStatData();
+ actionStatData.setLibelle(e.getKey());
+ actionStatData.setData(e.getValue());
+ return actionStatData;
+ }).collect(Collectors.toList());
+ }
+}
--
Gitblit v1.10.0