/* * 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 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 optionalLog = query.getResultList().stream().findFirst(); return optionalLog.isPresent() ? optionalLog.get() : null; } @Override public List 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 liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList(); List 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 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 liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList(); Map> 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 data = new ArrayList<>(); data.add(d); userNameToUserActionStatDto.put(key, data); } else { List 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 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 liste = new QueryExtendsWithApiUserActionSummarySearch(apiUserActionSummarySearch, em, selectQueryString, whereQueryString, groupQueryString).query().getResultList(); Map> 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 data = new ArrayList<>(); data.add(d); userNameToUserActionStatDto.put(key, data); } else { List 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()); } }