/*
|
* 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());
|
}
|
}
|