package com.megatim.fdxconsultation.core.impl.stats;
|
|
import com.megatim.fdxcommons.model.integration.ColumnDefinition;
|
import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
|
import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.ParsedQueryCriterion;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
|
import com.megatim.fdxcommons.tools.database.tables.FdxTableColumns;
|
import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToQueryCriterion;
|
import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
|
import com.megatim.fdxconsultation.model.dto.stats.TableauBordColumnDto;
|
import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
|
import com.megatim.fdxconsultation.model.stats.TableConfiguration;
|
import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
|
import java.sql.SQLException;
|
import java.util.List;
|
import java.util.Set;
|
import java.util.stream.Collectors;
|
import javax.naming.NamingException;
|
|
/**
|
*
|
* @author Gabuntu
|
*/
|
public class ConvertedTableConfiguration {
|
|
private final TableConfigurationDto tableConfigurationDto;
|
private final List<ColumnDefinition> columnDefinitions;
|
private final FdxTableColumns fdxTableColumns;
|
|
public ConvertedTableConfiguration(TableConfigurationDto tableConfigurationDto, FdxTableColumns fdxTableColumns, List<ColumnDefinition> columnDefinitions) {
|
this.tableConfigurationDto = tableConfigurationDto;
|
this.columnDefinitions = columnDefinitions;
|
this.fdxTableColumns = fdxTableColumns;
|
|
}
|
|
public TableConfiguration tableConfiguration() throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
|
|
TableConfiguration tableConfiguration = new TableConfiguration();
|
|
tableConfiguration.setFonctionAggregation(tableConfigurationDto.getFonctionAggregation());
|
tableConfiguration.setLibelle(tableConfigurationDto.getLibelle());
|
tableConfiguration.setColor(tableConfigurationDto.getColor());
|
|
TableauBordColumn targetedColumn = tableConfigurationDto.getTargetedColumn() != null
|
? convert(tableConfigurationDto.getTargetedColumn())
|
: null;
|
|
tableConfiguration.setTargetedColumn(targetedColumn);
|
|
Set<TableauBordColumn> groupinColumns = convert(tableConfigurationDto.getGroupingColumns());
|
groupinColumns.forEach(gC -> {
|
tableConfiguration.getGroupingColumns().add(gC);
|
gC.setTableConfiguration(tableConfiguration);
|
});
|
|
tableConfiguration.setTypeResultatConfiguration(tableConfigurationDto.getTypeResultatConfiguration());
|
|
QueryCriterion criterion = queryCriterion();
|
if (criterion != null) {
|
CriteriaEntityPersisted criterionPersisted = new ConvertedCriteriaEntityPersisted(criterion, columnDefinitions).criteriaEntityPersisted();
|
tableConfiguration.setCriterion(criterionPersisted);
|
criterionPersisted.setTableConfiguration(tableConfiguration);
|
}
|
|
return tableConfiguration;
|
}
|
|
private QueryCriterion queryCriterion() throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
|
return new ParsedQueryCriterion(
|
new CriteriaEntityFromViewToQueryCriterion(tableConfigurationDto.getCriterion()).queryCriterion(),
|
fdxTableColumns,
|
columnDefinitions
|
).parsedCriterion();
|
}
|
|
private Set<TableauBordColumn> convert(Set<TableauBordColumnDto> columns) {
|
return columns.stream().map(g -> convert(g)).collect(Collectors.toSet());
|
}
|
|
private TableauBordColumn convert(TableauBordColumnDto tableauBordColumnDto) {
|
return new TableauBordColumn(null, tableauBordColumnDto.getName(), tableauBordColumnDto.getTypeDonnee(), null);
|
}
|
}
|