package com.megatim.fdxconsultation.service.impl.stats; import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector; import com.megatim.fdxcommons.model.enumeration.Operateur; import com.megatim.fdxcommons.model.integration.ColumnDefinition; import com.megatim.fdxcommons.model.pojo.CriteriaEntity; import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView; import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest; import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException; import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException; import com.megatim.fdxconsultation.core.ifaces.helper.DataConsumptionOperations; import com.megatim.fdxconsultation.core.ifaces.helper.RequestHandler; import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager; import com.megatim.fdxconsultation.core.impl.stats.ConvertedTableauBordResponse; import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil; import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto; import com.megatim.fdxconsultation.model.mappers.MapStructMapper; import com.megatim.fdxconsultation.model.stats.TableauBord; import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord; import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest; import com.megatim.fdxconsultation.service.ifaces.stats.TableauBordGlobalRS; import com.megatim.fdxconsultation.tools.context.AppCommonContext; import com.mgt.rs.security.core.common.SecuredClass; import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.inject.Inject; import javax.ws.rs.Path; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; /** * * @author ASUS */ @SecuredClass(module = AppCommonContext.MODULE_CONSULTATION_WEB, path = "Tableau de bord global", description = "Tableau de bord global") @Path("tableau-bord-global") public class TableauBordGlobalRSImpl implements TableauBordGlobalRS { @Inject RequestHandler requestHandler; @Inject private TableauBordManager manager; @Inject com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper; @Inject private MapStructMapper mapper; @Inject DataConsumptionOperations dataConsumptionOperations; @Override public TableauBordSlimDto mapToSlimDto(TableauBord entity) { return mapper.tableauBordToTableauBordSlimDto(entity); } @Override public Response save(HttpHeaders headers, TableauBordRequest tableauBordRequest) { return Response.ok(mapToSlimDto(manager.save(tableauBordRequest))).build(); } @Override public Response update(HttpHeaders headers, Long id, TableauBordRequest tableauBordRequest) { manager.update(id, tableauBordRequest); return Response.ok().build(); } @Override public Response delete(HttpHeaders headers, Long id) { requestHandler.deleteTableauBord(id); return Response.ok().build(); } @Override public Response findById(HttpHeaders headers, Long id) { return Response.ok(new ConvertedTableauBordResponse(manager.get(id)).tableauBordResponse()).build(); } @Override public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) { try { CriteriaEntityFromView finalCriterion = getCriteriaEntityAndAddTypeConfiguration(criteriaFormRequest); List dtos = requestHandler.findTableauBord(new CriteriaFormRequest(finalCriterion)); return Response.ok(dtos).build(); } catch (CommonApplicationValidationException ex) { throw ex; } catch (Exception ex) { Logger.getLogger(TableauBordGlobalRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) { try { CriteriaEntityFromView finalCriterion = getCriteriaEntityAndAddTypeConfiguration(criteriaFormRequest); List dtos = requestHandler.findTableauBordWithPagination(new CriteriaFormRequest(finalCriterion), Arrays.asList(), pageNumber, pageSize); return Response.ok(dtos).build(); } catch (Exception ex) { Logger.getLogger(TableauBordGlobalRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Response getColumns(HttpHeaders headers, String referentielVersion, String codeTypeFichier) { List colDefs = dataConsumptionOperations.getPrintableColumns(referentielVersion, codeTypeFichier); return Response.ok(commonMapper.columnDefinitionListToColumnDefinitionDtoList(colDefs)).build(); } @Override public Response getDatas(HttpHeaders headers, String referentielVersion, String codeTypeFichier) { return Response.ok(manager.getDatas(referentielVersion, codeTypeFichier)).build(); } @Override public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) { try { CriteriaEntityFromView criterion = getCriteriaEntityAndAddTypeConfiguration(criteriaFormRequest); return requestHandler.countTableauBord(new CriteriaFormRequest(criterion)); } catch (Exception ex) { Logger.getLogger(TableauBordGlobalRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); throw new CommonApplicationServerException(); } } @Override public Response getSearchColumns(HttpHeaders headers) { return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(TableauBord.class)).build(); } @Override public Response deleteUserTableauBord(HttpHeaders headers, String userName) { throw new UnsupportedOperationException("Not supported yet."); } private CriteriaEntityFromView getCriteriaEntityAndAddTypeConfiguration(CriteriaFormRequest criteriaFormRequest) { CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView(); finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND); finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.GLOBAL, Operateur.EQUALS)); if (criteriaFormRequest != null && criteriaFormRequest.getCriteria() != null) { finalCriterion.getSubCriterias().add(criteriaFormRequest.getCriteria()); } return finalCriterion; } private CriteriaEntityFromView newCriteriaEntityFromView(String nomColonne, Object criteriaValue, Operateur operateur) { CriteriaEntityFromView criterion = new CriteriaEntityFromView(); criterion.setNomColonne(nomColonne); criterion.setCriteriaValue(criteriaValue); criterion.setOperateur(operateur); return criterion; } }