/*
|
* 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.core.impl.helper;
|
|
import com.megatim.commons.tools.exceptions.ApplicationServerException;
|
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.CriteriaEntityFromView;
|
import com.megatim.fdxcommons.model.pojo.PageData;
|
import com.megatim.fdxcommons.tools.database.connection.DBConnection;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.SelectQueryResult;
|
import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition;
|
import com.megatim.fdxcommons.tools.database.tables.FdxApiTable;
|
import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
|
import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToQueryCriterion;
|
import com.megatim.fdxconsultation.core.ifaces.customtypefichier.CustomTypeFichierManager;
|
import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
|
import com.megatim.fdxconsultation.core.ifaces.helper.DataConsumptionOperations;
|
import com.megatim.fdxconsultation.core.impl.utils.FdxTableUtils;
|
import com.megatim.fdxconsultation.model.administration.User;
|
import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfiguration;
|
import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView;
|
import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
|
import com.megatim.fdxconsultation.tools.context.AppCommonContext;
|
import java.io.File;
|
import java.sql.Connection;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
import javax.annotation.Resource;
|
import javax.enterprise.context.Dependent;
|
import javax.inject.Inject;
|
import javax.sql.DataSource;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@Dependent
|
public class DataConsumptionOperationsImpl implements DataConsumptionOperations {
|
|
@Resource(lookup = AppCommonContext.JNDI_NAME)
|
private DataSource dataSource;
|
|
@Inject
|
MapStructMapper mapper;
|
|
@Inject
|
com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
|
|
@Inject
|
CustomTypeFichierManager customTypeFichierManager;
|
|
@Inject
|
ColumnDefinitionManager columnDefinitionManager;
|
|
@Override
|
public List<Map<String, Object>> findByCriteria(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion) {
|
try ( Connection connection = new DBConnection(dataSource).connection()) {
|
SelectQueryResult result = selectResult(connection, codeTypeFichier, referentielVersion, curentDataProductionCriterion(criterion));
|
return FdxTableUtils.fdxTableRowToListMap(result.rows());
|
|
} catch (Exception ex) {
|
Logger.getLogger(DataConsumptionOperationsImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
|
throw new CommonApplicationServerException();
|
}
|
}
|
|
@Override
|
public Long count(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion) {
|
try ( Connection connection = new DBConnection(dataSource).connection()) {
|
return table(codeTypeFichier, referentielVersion)
|
.count(curentDataProductionCriterion(criterion), connection);
|
} catch (Exception ex) {
|
throw new ApplicationServerException(ex.getMessage());
|
}
|
}
|
|
@Override
|
public PageData findByCriteriaWithPagination(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion, int pageNumber, int pageSize) {
|
try ( Connection connection = new DBConnection(dataSource).connection()) {
|
return getPageData(connection, codeTypeFichier, referentielVersion, curentDataProductionCriterion(criterion), pageNumber, pageSize);
|
} catch (Exception ex) {
|
Logger.getLogger(DataConsumptionOperationsImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
|
throw new CommonApplicationServerException();
|
}
|
|
}
|
|
@Override
|
public File printAll(String referentielVersion, String codeTypeFichier, CustomTypeFichierReportConfigurationFromView reportConfigurationFromView, User userConnected) throws Exception {
|
CustomTypeFichierReportConfiguration reportConfiguration = mapper.customTypeFichierReportConfigurationFromViewToCustomTypeFichierReportConfiguration(reportConfigurationFromView);
|
return customTypeFichierManager.generatePdf(reportConfiguration, codeTypeFichier, userConnected, false);
|
}
|
|
@Override
|
public List<ColumnDefinition> getPrintableColumns(String referentielVersion, String codeTypeFichier) {
|
return columnDefinitionManager.findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier);
|
}
|
|
private QueryCriterion curentDataProductionCriterion(CriteriaEntityFromView criterion) {
|
QueryCriterion queryCriterion = new CriteriaEntityFromViewToQueryCriterion(criterion).queryCriterion();
|
|
if (queryCriterion != null) {
|
return new QueryCriterion(null,
|
null,
|
null,
|
CriteriaLogicConnector.AND,
|
Arrays.asList(queryCriterion,
|
new QueryCriterion(new EnCoursProductionColumnDefinition().name(), false, Operateur.EQUALS, null, Arrays.asList()))
|
);
|
} else {
|
return new QueryCriterion(new EnCoursProductionColumnDefinition().name(), false, Operateur.EQUALS, null, Arrays.asList());
|
}
|
|
}
|
|
private SelectQueryResult selectResult(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion) {
|
try {
|
return table(codeTypeFichier, referentielVersion).selectResult(queryCriterion, connection);
|
} catch (Exception ex) {
|
throw new ApplicationServerException(ex.getMessage());
|
}
|
}
|
|
private SelectQueryResult selectResult(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion, int pageNumber, int pageSize) {
|
try {
|
int offset = (pageNumber - 1) * pageSize;
|
return table(codeTypeFichier, referentielVersion).selectResult(queryCriterion, connection, pageSize, offset);
|
} catch (Exception ex) {
|
ex.printStackTrace();
|
throw new ApplicationServerException(ex.getMessage());
|
}
|
}
|
|
private FdxApiTable table(String codeTypeFichier, String referentielVersion) {
|
return new FdxApiTable(codeTypeFichier, referentielVersion);
|
}
|
|
private PageData getPageData(Connection connection, String codeTypeFichier, String referentielVersion, QueryCriterion queryCriterion, int pageNumber, int pageSize) {
|
|
try {
|
|
SelectQueryResult result = selectResult(connection, codeTypeFichier, referentielVersion, queryCriterion, pageNumber, pageSize);
|
|
List<Map<String, Object>> loadedData = FdxTableUtils.fdxTableRowToListMap(result.rows());
|
long totalNumberOfElements = table(codeTypeFichier, referentielVersion).count(queryCriterion, connection);
|
|
PageData pageData = new PageData();
|
pageData.setLoadedData(loadedData);
|
pageData.setPageNumber(pageNumber);
|
pageData.setPageSize(pageSize);
|
pageData.setTotalNumberOfElements(totalNumberOfElements);
|
|
return pageData;
|
|
} catch (Exception ex) {
|
throw new ApplicationServerException(ex.getMessage());
|
}
|
}
|
|
}
|