Kenmegne
7 days ago 23a46b4be35277e06ec89f48730eeb694e686be8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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);
    }
}