From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation
---
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertManagerImpl.java | 133
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertDataProductionInDataProductionToDeleteQuery.java | 35
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/ConnexionStatutSessionHandler.java | 89
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/ProductionMetaDataDAOImpl.java | 52
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatDto.java | 21
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ProductionMetaDataRoute.java | 98
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/CORSFilter.java | 47
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/ActionDAOImpl.java | 71
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionType.java | 9
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Sexe.java | 37
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalConnexionUtilisateurManager.java | 30
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordGlobalRSImpl.java | 164
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierWithReferentielSearchRS.java | 33
fdx-commons/fdxcommons-dao-ifaces/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ExtensionFichierManager.java | 25
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/StandaloneServerStateEntityManager.java | 19
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumnData.java | 31
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBordResponse.java | 82
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java | 157
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableConfigurationDAO.java | 16
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserDto.java | 49
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/context/AppContext.java | 48
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/configuration/CodeStatutHttp.java | 124
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/natureproduction/NatureProductionFichierDAOImpl.java | 47
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableRow.java | 27
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/UserDAO.java | 50
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/CriteriaQueryValidator.java | 19
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/ReferentielToImportData.java | 69
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/RoleManagerImpl.java | 358
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DeleteDataProductionTask.java | 43
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/RemoteConfigurationManagerImpl.java | 174
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/GroupByQuery.java | 42
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxApiTable.java | 133
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ReferentielDAOImpl.java | 77
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserRS.java | 132
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/StructureLigneManagerImpl.java | 39
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonSelectQueryResult.java | 41
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonFdxParsedDataAction.java | 73
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java | 127
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/AppColumnDefinitions.java | 42
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordSearchRSImpl.java | 57
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/PlanificationManagerImpl.java | 67
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionManagerImpl.java | 124
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithCriteriaEntityDAO.java | 65
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierToExport.java | 29
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionManager.java | 25
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationDto.java | 44
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsDecoder.java | 40
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionDecoder.java | 41
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/integration/ColumnDefinitionDto.java | 19
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/DataProductionEndpoint.java | 41
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichierId.java | 22
fdx-commons/fdxcommons-service-impl/.gitignore | 50
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/UserManager.java | 71
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/CommonDataProductionDto.java | 52
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/RemoteConfigurationManager.java | 26
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierConfigurationSearch.java | 26
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantSlimDto.java | 33
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ParticipantDAOImpl.java | 49
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TypeFichierDataBadRequest.java | 12
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ActivationApiUserMessage.java | 16
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ExtensionFichierRS.java | 70
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithSearchEnityDAO.java | 196
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatListResult.java | 26
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalConnexionUtilisateurDto.java | 34
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/CustomCamelContext.java | 35
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/TypePas.java | 43
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxConsultationInsert.java | 27
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielDto.java | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ReferentielDataConsumer.java | 24
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ApplicationSourceManager.java | 19
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBord.java | 50
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateDataProductionQuery.java | 35
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/MoreThanOneTableDataNotFoundException.java | 11
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserParticipantDAO.java | 21
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeParticipantSlimResponse.java | 51
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataConstraint.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/JpqlQueryElement.java | 34
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/DataInMemory.java | 38
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeNoeudsToExport.java | 29
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedData.java | 36
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/connection/DBConnection.java | 23
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSpecificSearch.java | 31
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/LatestDataProductionTokenQuery.java | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TransfertDataMessageSessionHandler.java | 50
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonsTools.java | 1560 +
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/JAXRSConfiguration.java | 13
fdx-consultation/fdxconsultation-service-impl/src/main/resources/natureProductionFichiers.xml | 168
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ApplicationSourcesToExport.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxApiColumnDefinitions.java | 23
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfiguration.java | 85
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ReferentielSearchRS.java | 11
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/Constantes.java | 23
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/PaysRSImpl.java | 175
fdx-consultation/fdxconsultation-service-impl/src/main/resources/application.properties | 10
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceDto.java | 32
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CriteriaLogicConnector.java | 10
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/AgentConfigurationEntityDAO.java | 16
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/settings/DisplayOptions.java | 28
fdx-commons/fdxcommons-dao-ifaces/pom.xml | 154
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonTableUtil.java | 112
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonAppContext.java | 31
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumns.java | 54
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/ObjectMapperContextResolver.java | 33
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleValidationRS.java | 115
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/AfterUserAction.java | 16
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorkerGroup.java | 16
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeNoeudReporting.java | 52
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DeleteDataProductionTimer.java | 33
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportReferentielHelper.java | 14
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/json/CreateJsonTableIfNotExistQuery.java | 161
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/consumption/DataConsumptionOperationsRSImpl.java | 130
fdx-consultation/pom.xml | 41
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersEncoder.java | 35
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierDto.java | 49
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordFlatResponse.java | 33
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeOperation.java | 52
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/RoleManager.java | 62
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationSlimDto.java | 22
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinitionId.java | 26
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java | 128
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/TableDefinitionManager.java | 19
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StandaloneServerStateEntity.java | 73
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/CriteriaEntitySearch.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonDelete.java | 100
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/ReferentielConsumptionHelperImpl.java | 92
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/MessageSystemeDto.java | 26
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryCriterion.java | 53
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichier.java | 99
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/Search.java | 29
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeNoeudRSImpl.java | 175
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JqplQueryString.java | 54
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/ActionSecurity.java | 167
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/RemoteConfigurationDAO.java | 17
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityEncoder.java | 34
fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/startup/StartupBean.java | 14
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonSelectQuery.java | 214
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/AbstractCrudDAO.java | 185
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/ActionManager.java | 20
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ExtensionFichierManagerImpl.java | 136
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxInsert.java | 26
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/PlanificationManager.java | 17
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/RoutageDAOImpl.java | 54
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierManager.java | 23
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/ApiUserActionLogDAO.java | 21
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/DocumentManager.java | 19
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeParticipantRSImpl.java | 179
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserTypeFichierManager.java | 23
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/MaxDataProductionIdQuery.java | 47
fdx-commons/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordColumnDto.java | 22
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ParticipantRS.java | 66
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/JsonDataValidationError.java | 293
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/CriteriaEntityPersisted.java | 85
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DataWithTokenToDataProductionQuery.java | 42
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalActionUtilisateurDAOImpl.java | 44
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierFormDto.java | 45
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxApiInsert.java | 52
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/FdxConsultationIntegrationData.java | 33
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ConnectionUtil.java | 30
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/CommonTools.java | 404
fdx-commons/fdxcommons-core-impl/.gitignore | 50
fdx-commons/fdxcommons-service-ifaces/pom.xml | 150
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Insert.java | 10
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionDAO.java | 19
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TableName.java | 13
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/TableDefinitionDAOImpl.java | 31
fdx-consultation/fdxconsultation-dao-impl/pom.xml | 143
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordRSImpl.java | 181
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatOperation.java | 28
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JpqlTable.java | 52
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationToExport.java | 24
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/PaysToExport.java | 31
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportZipValidatorImpl.java | 133
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/api/token/ApiTokenRSImpl.java | 268
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/TransfertDataMessageConsumer.java | 33
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/TableDefinitionDAO.java | 34
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageSlimResponse.java | 47
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeMessageSysteme.java | 44
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/ActionDAO.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JpqlWhereQueryString.java | 186
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Category.java | 27
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/BeforeActionImpl.java | 42
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableConfiguration.java | 101
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/PaysManagerImpl.java | 127
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsEndpoint.java | 75
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/SftpConfiguration.java | 145
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomFieldDto.java | 19
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/FileProperties.java | 33
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataRow.java | 12
fdx-commons/README.md | 43
fdx-commons/fdxcommons-dao-impl/src/main/resources/app.properties | 6
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/CategoryDAO.java | 16
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/StandaloneServerStateSessionHandler.java | 50
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordColumnResponse.java | 21
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableDataNotFoundException.java | 13
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ReferentielSearchRSImpl.java | 50
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java | 113
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SupervisionData.java | 17
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/CustomDAOIfaces.java | 197
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java | 131
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/LocalConfiguration.java | 80
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteQuery.java | 94
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskType.java | 9
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/DisplayOptionsManager.java | 14
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/StructureLigneDAO.java | 16
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RoutingCheckerImpl.java | 29
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordUserSpecificSearchDAO.java | 12
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/historique/ReferentielIntegrationHistoriqueDAOImpl.java | 72
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CategorieFichier.java | 43
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadColumnTypeException.java | 11
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericCrudResourceIFaces.java | 61
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatResultDto.java | 25
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataColumn.java | 12
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/TypeFichierReferentielManager.java | 21
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/supervision/SupervisionRSImpl.java | 78
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTaskFactory.java | 49
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/CategoryDAOImpl.java | 67
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonDataRowToUpdate.java | 153
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/dataproduction/DataProductionRS.java | 71
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeExtension.java | 43
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/PageData.java | 25
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Noeud.java | 111
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/resolvers/JacksonMapperFormat.java | 30
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedData.java | 32
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ParserUtils.java | 420
fdx-consultation/fdxconsultation-core-impl/nb-configuration.xml | 18
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/PreparedStatementProcessor.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAttributNotExistException.java | 30
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableauBordHandler.java | 94
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/ActionManagerImpl.java | 33
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectQuery.java | 145
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionDto.java | 109
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTable.java | 282
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/InterceptorHandler.java | 17
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeParticipantManager.java | 29
fdx-consultation/fdxconsultation-service-impl/src/main/webapp/index.html | 10
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/abstracts/CustomManagerIFaces.java | 136
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxConsultationTable.java | 96
fdx-commons/fdxcommons-core-ifaces/nb-configuration.xml | 18
fdx-commons/fdxcommons-service-impl/nb-configuration.xml | 19
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataColumn.java | 29
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordColumnManagerImpl.java | 27
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageDetailsResponse.java | 81
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ApplicationSourceManagerImpl.java | 39
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeParticipant.java | 113
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionToDeleteManagerImpl.java | 26
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/CamelBootstrap.java | 78
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalActionUtilisateurDto.java | 34
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutDataProduction.java | 13
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/AgentConfigurationEntity.java | 55
fdx-consultation/fdxconsultation-tools-module/pom.xml | 21
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalConnexionUtilisateurDAO.java | 19
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/base/BaseEntity.java | 56
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/DasboardTypeFichierSearchRS.java | 33
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserTypeFichierManagerImpl.java | 53
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/PaysReporting.java | 51
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/SettingRS.java | 22
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ApiUserActionsRoute.java | 26
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/DasboardTypeFichierSearchRSImpl.java | 59
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordResponse.java | 36
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/RoleReporting.java | 75
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/ParametersValidator.java | 18
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserValidationRSImpl.java | 230
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierDto.java | 66
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessageType.java | 9
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApiTokenSearch.java | 13
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TypeFichierRS.java | 66
fdx-consultation/fdxconsultation-model/pom.xml | 160
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/AfterUserActionImpl.java | 77
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationList.java | 27
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/message/systeme/MessageSystemeManagerImpl.java | 136
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/TypeFichierManagerImpl.java | 178
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntityFromView.java | 49
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTableColumns.java | 114
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/TypeFichierRSImpl.java | 179
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateQuery.java | 69
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/FileUtilities.java | 39
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/context/AppContextEntity.java | 16
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/favoritessearch/FavoriteSearchManagerImpl.java | 72
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/DocumentRSImpl.java | 58
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NatureProductionFichiersToExport.java | 27
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ApplicationSourceDAO.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonValidationExceptionMapperCustom.java | 79
fdx-consultation/fdxconsulation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java | 76
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlParsedQueryCriterion.java | 156
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteTableDataQuery.java | 49
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableConfigurationResponse.java | 43
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/AppColumnDeleter.java | 13
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/util/QueryExtendsWithApiUserActionSummarySearch.java | 106
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeParticipantDAOImpl.java | 52
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableRowDto.java | 36
fdx-consultation/fdxconsultation-reporting/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/metadata/ProductionMetaDataManagerImpl.java | 33
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/CustomDAOWithCriteriaEntityIfaces.java | 76
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantDto.java | 64
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/db/ReferentielDataSaverImpl.java | 586
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ParticipantSearchRS.java | 11
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/PlanificationDAO.java | 17
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataRow.java | 33
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/NoeudSlimResponse.java | 51
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/XmlUtils.java | 31
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportReferentielHelperImpl.java | 26
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/WhereQueryParameters.java | 97
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateDataProductionQuery.java | 63
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleRS.java | 125
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalActionUtilisateurReporting.java | 44
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Gravite.java | 25
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ReferentielRSImpl.java | 174
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormModelIFaces.java | 30
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysDto.java | 51
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/ApiJsonFdxTable.java | 72
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/authentification/LoginRequest.java | 15
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordGlobalSearchManagerImpl.java | 25
fdx-consultation/fdxconsultation-core-ifaces/.gitignore | 50
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/RoutageManager.java | 38
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierWithReferentielSearchRSImpl.java | 55
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableInsert.java | 21
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/api/token/ApiTokenReporting.java | 53
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfigurationId.java | 23
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/ApiUserActionLog.java | 56
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/ColumnDefinitionDAOImpl.java | 50
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/RemoteTypeAction.java | 49
fdx-consultation/fdxconsultation-core-ifaces/pom.xml | 156
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalConnexionUtilisateurReporting.java | 42
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/OrderByType.java | 13
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/IndexColumnDefinition.java | 35
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/CodeStatutHttpSearch.java | 26
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalConnexionUtilisateurSearch.java | 36
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/DataProductionDto.java | 54
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiUpdateTypeFichierData.java | 47
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/CategoryManagerImpl.java | 76
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/message/systeme/MessageSystemeDAO.java | 28
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DeletedColumnDefinition.java | 31
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageSysteme.java | 135
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/StatististiquesDAO.java | 17
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/TypeFichierDAOImpl.java | 82
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/PaysDAO.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataRow.java | 31
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/PaysSlimResponse.java | 47
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ParticipantsToExport.java | 27
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierSearchRS.java | 35
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordResult.java | 124
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeNoeudManager.java | 29
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/RemoteConfigurationRoute.java | 36
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserSesionApplication.java | 100
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchCriteria.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationColumnDefinitions.java | 26
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/ScheduleAction.java | 47
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/AfterUserActionFilter.java | 78
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessage.java | 15
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/Planification.java | 79
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ReferentielReporting.java | 52
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierConsultationDAO.java | 17
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/RoleSearchRSImpl.java | 50
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/NumberOperator.java | 37
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericReportingManagerIFaces.java | 254
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/TableDataValidationError.java | 174
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertQuery.java | 103
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/PlanificationDAOImpl.java | 33
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/LocalDateTimeValueParseError.java | 13
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/TypeFichierReferentielManagerImpl.java | 41
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/StructureLigneManager.java | 19
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserTypeFichierDAO.java | 22
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTask.java | 10
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/UserReporting.java | 74
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithCriteriaEntity.java | 27
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateProductionMetaDataQuery.java | 85
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierSlimDto.java | 30
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractUniqueElementIFace.java | 11
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionToDeleteManager.java | 16
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/UserActionLogRSImpl.java | 165
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/api/token/ApiTokenDAO.java | 17
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/PlanificationDto.java | 70
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaFormRequest.java | 24
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryParam.java | 24
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxApiInsert.java | 41
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonInsertQuery.java | 144
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataValidator.java | 26
fdx-consultation/fdxconsultation-dao-ifaces/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/beans.xml | 6
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiToken.java | 85
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/FonctionAggregationCriterion.java | 53
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionIdColumnDefinition.java | 31
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserRSImpl.java | 269
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeNoeudSearch.java | 21
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/UserActionLogDAO.java | 16
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageDto.java | 111
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/log/ApiUserActionLogReporting.java | 43
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/favoritessearch/FavoriteSearchRSImpl.java | 130
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/FavoriteSearchDto.java | 23
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/EchecIntegrationQueries.java | 37
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxTableStructure.java | 75
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeParticipantsToExport.java | 27
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/UserManagerImpl.java | 648
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/DashboardFichierManager.java | 21
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/configuration/CodeStatutHttpDAOImpl.java | 30
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ApplicationSourceDAOImpl.java | 40
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierDAO.java | 17
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageEncoder.java | 34
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultJsonTypeFichierDataRow.java | 41
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfigurationFromView.java | 31
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/DynamicTableCreator.java | 13
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/CommonUtilities.java | 56
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ReferentielManagerImpl.java | 162
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/JsonFdxConsultationIntegrationData.java | 33
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadQueryCriteriaException.java | 11
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/RoutageDAO.java | 73
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeResultatConfiguration.java | 48
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordDto.java | 36
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/TypeFichierSlimResponse.java | 63
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java | 276
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/StandaloneServerStateEntityDAOImpl.java | 57
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/AgentConfigurationEntityManagerImpl.java | 32
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractReadWithCriteriaEntityIFaces.java | 53
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CustomColumns.java | 47
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordQueryPojo.java | 32
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/ApplicationData.java | 33
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierConfigurationDAOImpl.java | 55
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/dtos/ApiUserActionSummarySearch.java | 21
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/jaxb/util/JaxBUtil.java | 40
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/AggregationQuery.java | 99
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionHandlerImpl.java | 37
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonStructureIterator.java | 135
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertDataMessageToTransfert.java | 100
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordGlobalSearchDAOImpl.java | 28
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeParticipantDAO.java | 16
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/NoeudReporting.java | 56
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/ColumnStatus.java | 24
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Role.java | 176
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoutageSearch.java | 26
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/timer/processor/DeleteDataProductionJob.java | 13
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractCUDWithCriteriaEntityIFaces.java | 45
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/settings/DisplayOptionsDAO.java | 16
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeNoeudSlimResponse.java | 51
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/FonctionAggregation.java | 47
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadDataValueException.java | 13
fdx-commons/fdxcommons-tools/nb-configuration.xml | 18
fdx-commons/fdxcommons-service-impl/pom.xml | 164
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/UserActionLogManagerImpl.java | 110
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ParticipantRSImpl.java | 175
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/RoleDAO.java | 21
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonColumnDefinition.java | 46
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/RoutageId.java | 19
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ExtensionFichierRSImpl.java | 173
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/StandaloneServerStateEntityDAO.java | 15
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RequestHandlerImpl.java | 105
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/AppColumnDefinition.java | 21
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierSearchRS.java | 11
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/SelectResult.java | 36
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/AgentConfigurationEntityDAOImpl.java | 55
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/RoleFormModel.java | 30
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordRequest.java | 33
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/configuration/CodeStatutHttpManagerImpl.java | 186
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategorySlimDto.java | 17
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/UserFormModel.java | 28
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionFilter.java | 19
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ImportReferentielException.java | 25
fdx-consultation/fdxconsultation-model/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/DisplayOptionsRSImpl.java | 38
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/TypeFichierManager.java | 30
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeParticipantSearch.java | 23
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ReferentielRS.java | 66
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/favoritessearch/FavoriteSearchManager.java | 20
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ReferentielDAO.java | 22
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java | 156
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessageSystemeEndpoint.java | 87
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardResponse.java | 25
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/RoutageRS.java | 85
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/pom.xml | 52
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/ColumnDefinitionManager.java | 30
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeParticipantReporting.java | 52
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchColumn.java | 32
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBordColumn.java | 76
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/ApiUserActionLogManager.java | 26
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/mappers/MapStructMapper.java | 185
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/RoutagesToExport.java | 27
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierDAO.java | 12
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Select.java | 14
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/context/AppCommonContext.java | 69
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ValidateurTypeFichierParser.java | 12
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Operateur.java | 79
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/UpdateQueryPojo.java | 42
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/ResultSetExtractor.java | 47
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsGlobalEndpoint.java | 54
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordGlobalRS.java | 123
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAlredyExistException.java | 37
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfigurationResponse.java | 55
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierSlimDto.java | 36
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/QueryMetaData.java | 10
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Routage.java | 152
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordRS.java | 122
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GeneriConsultingManagerIFaces.java | 89
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericConsultingCompositePKResourceIFaces.java | 69
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/InterceptorHandlerImpl.java | 158
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ReferentielManager.java | 34
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/SupervisionFilterModalFormRequest.java | 25
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/SettingsManagerImpl.java | 24
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/CriteriaEntityPersistedDAO.java | 16
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaDataId.java | 26
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/integration/AppColumnCreator.java | 13
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserParticipantManager.java | 21
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierReferentielSearchRS.java | 32
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericCrudManagerIFaces.java | 58
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/UserActionLogManager.java | 27
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/historique/ReferentielIntegrationHistoriqueManagerImpl.java | 38
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/remoteaction/RemoteConfigurationRS.java | 19
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DataIntegrationProcessor.java | 53
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/StandaloneServerStateConsumerRoute.java | 26
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/SecurityFilter.java | 54
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeDonnee.java | 61
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeIdMessageSysteme.java | 53
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/CommonDataProduction.java | 73
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/FdxColumnNotFoundException.java | 12
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ParticipantManager.java | 28
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/BaseEntityDto.java | 29
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/ColumnNotFoundException.java | 12
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/TokenColumnDefinition.java | 34
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/AppFileUtils.java | 30
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataRow.java | 267
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserParticipantManagerImpl.java | 54
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/DocumentDAO.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ApplicationForbidenException.java | 29
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java | 160
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatData.java | 22
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfiguration.java | 30
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordGlobalSearch.java | 28
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleValidationRSImpl.java | 260
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TransfertSearch.java | 14
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierSlimDto.java | 28
fdx-commons/pom.xml | 27
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/EchecIntegrationDAOImpl.java | 46
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationSlimDto.java | 26
fdx-consultation/fdxconsultation-core-impl/pom.xml | 202
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/TypeFichierReferentielSearchDAO.java | 21
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TranfertDecoder.java | 41
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/FdxConsultationTableInsert.java | 83
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/DisplayOptionsManagerImpl.java | 29
fdx-consultation/fdxconsultation-dao-ifaces/.gitignore | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/NoeudRSImpl.java | 188
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonInsert.java | 15
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/ApiUserActionLogRSImpl.java | 198
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CountQuery.java | 95
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/LocalDateTimeAdapter.java | 31
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessagesSystemeCronBean.java | 103
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeNoeud.java | 114
fdx-commons/fdxcommons-dao-impl/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ParticipantSearchRSImpl.java | 52
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StatutConfiguration.java | 13
fdx-consultation/README.md | 43
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/HistoriqueMotDePasseDAO.java | 24
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/startup/StartupBean.java | 303
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/StatResultType.java | 13
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordGlobalSearchRSImpl.java | 48
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/ColumnDefinitionDAO.java | 84
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/metadata/ProductionMetaDataManager.java | 18
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/message/systeme/MessageSystemeManager.java | 60
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ExtensionFichierSlimResponse.java | 52
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/FichiersEndpoint.java | 55
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeStatut.java | 37
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ParticipantManagerImpl.java | 143
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordColumnManager.java | 17
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/natureproduction/NatureProductionFichierManagerImpl.java | 34
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/DynamicClassCreatorImpl.java | 150
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionSource.java | 47
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielXmlDataReaderImpl.java | 175
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/BeforeUserActionFilter.java | 34
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalConnexionUtilisateurRSImpl.java | 220
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserWebSocket.java | 52
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudSlimDto.java | 32
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordColumnDAO.java | 16
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/RoleSecurity.java | 252
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierDto.java | 33
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxbentity/adapter/LocalDateAdapter.java | 27
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/favoritessearch/FavoriteSearch.java | 33
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/BeforeAction.java | 16
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TableauBordSearchRS.java | 7
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonDataUtil.java | 206
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTable.java | 251
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java | 112
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonResultSetProcessor.java | 143
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/PaysManager.java | 24
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalActionUtilisateur.java | 111
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TestRS.java | 27
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/configuration/CodeStatutHttpManager.java | 29
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/UserActionLogConsumer.java | 25
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Participant.java | 130
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataColumn.java | 29
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/CriteriaEntityPersistedManager.java | 21
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinition.java | 71
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/TypeFichierJsonDAO.java | 29
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/AdministrationNumberDto.java | 23
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/supervision/SupervisionRS.java | 45
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/CustomTypeFichierManagerImpl.java | 105
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/FdxParsedDataAction.java | 74
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/UserActionLogRS.java | 14
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/DocumentRS.java | 44
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordGlobalSearchDAO.java | 12
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ApplicationSource.java | 96
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordUserSpecificSearchManagerImpl.java | 25
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/PaysRS.java | 68
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/RemoteConfigurationDto.java | 47
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserTypeFichierDAOIml.java | 134
fdx-consultation/fdxconsultation-service-ifaces/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Action.java | 220
fdx-consultation/fdxconsultation-reporting/pom.xml | 88
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeConfigurationTableauBord.java | 48
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/tools/SourceCompiler.java | 29
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordManagerImpl.java | 316
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ExtensionFichier.java | 90
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/UserActionLogDAOImpl.java | 44
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/FonctionAggregationCriterionDto.java | 17
fdx-commons/fdxcommons-model/nb-configuration.xml | 18
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableNotCummulativeException.java | 13
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ParticipantDAO.java | 14
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/NoeudDAOImpl.java | 29
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/HistoriqueMotDePasse.java | 139
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/DocumentDAOImpl.java | 48
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordDAO.java | 44
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableConfigurationDAOImpl.java | 60
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/factory/FdxConsultationTableFactory.java | 31
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierConfigurationManager.java | 20
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dataproduction/DataProduction.java | 26
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/UserActionsRoute.java | 34
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataIterator.java | 36
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ParsedQueryCriterion.java | 132
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/TransfertManager.java | 25
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/InformationGeneraleDto.java | 24
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueManager.java | 22
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/mappers/MapStructMapper.java | 203
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionFilterImpl.java | 107
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/api/token/ApiTokenRS.java | 120
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudSlimDto.java | 33
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntity.java | 97
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/StandaloneServerStateEntityManagerImpl.java | 71
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/TypeFichierJson.java | 56
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionSlimDto.java | 110
fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/beans.xml | 6
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleRSImpl.java | 270
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ParticipantSlimResponse.java | 54
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/customtypefichier/CustomTypeFichierManager.java | 58
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportZipValidatorIfaces.java | 25
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/helper/FileInsertionProcess.java | 331
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/BrokerProperties.java | 17
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ConnexionStatutEndpoint.java | 41
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlWhereQueryParameters.java | 97
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/User.java | 252
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NoeudsToExport.java | 28
fdx-commons/fdxcommons-service-impl/src/main/webapp/index.html | 10
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/CriteriaEntitySearchUtil.java | 103
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/RemoteConfigurationDAOImpl.java | 33
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/Transfert.java | 90
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBord.java | 81
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/StandaloneServerStateEndpoint.java | 64
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinitionId.java | 24
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/StandaloneServerStateConsumer.java | 31
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalConnexionUtilisateurDAOImpl.java | 44
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateCreationColumnDefinition.java | 31
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ProductionMetaDaConsumer.java | 52
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/TypeFichierReporting.java | 64
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/AgentConfigurationEntityManager.java | 18
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TableauBordGlobalSessionHandler.java | 51
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionToDeleteDAO.java | 16
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/natureproduction/NatureProductionFichierDAO.java | 25
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/DisplayOptionsRS.java | 32
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Document.java | 33
fdx-commons/fdxcommons-core-impl/pom.xml | 272
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/SettingsManager.java | 12
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/DirectToTokenGenerationKafkaRoute.java | 31
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remoteaction/RemoteConfigurationId.java | 23
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/GroupingColumnDto.java | 20
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApplicationSourceSearch.java | 21
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalActionUtilisateurRS.java | 92
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryParam.java | 24
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/NoeudDAO.java | 37
fdx-commons/fdxcommons-model/pom.xml | 221
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeActionSysteme.java | 44
fdx-consultation/fdxconsultation-core-impl/.gitignore | 50
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ParticipantSearch.java | 21
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriteriaCorrectValue.java | 227
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/RoutageManagerImpl.java | 173
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionLogDto.java | 34
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalActionUtilisateurSearch.java | 36
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsEncoder.java | 35
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutReferentiel.java | 48
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CodeStatutHttpDto.java | 43
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielForUserSearchRSImpl.java | 51
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/natureproduction/NatureProductionFichierManager.java | 20
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/CriteriaLocalDateTimeValue.java | 49
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxTableDefinition.java | 124
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DefaultDataProductionWorkerGroup.java | 81
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/favoritessearch/FavoriteSearchDAO.java | 15
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageSlimDto.java | 62
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/TableDefinitionQueries.java | 169
fdx-consultation/fdxconsultation-dao-ifaces/pom.xml | 142
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/DocumentManageImpl.java | 85
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielToImportDataReaderImpl.java | 76
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/UserSessionBean.java | 23
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/adapters/LocalDateTimeAdapter.java | 25
fdx-consultation/fdxconsultation-service-impl/nb-configuration.xml | 21
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/integration/ColumnDefinitionResource.java | 23
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Referentiel.java | 140
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeNoeudManagerImpl.java | 132
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserParticipantSearchRSImpl.java | 79
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProduction.java | 36
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CurrentDataProductionQuery.java | 42
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatScalarResult.java | 19
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordGlobalSearchManager.java | 8
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/TableDefinitionManagerImpl.java | 34
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/DashboardFichierManagerImpl.java | 41
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/EtatTransfert.java | 82
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierDataRow.java | 18
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierReferentielSearch.java | 28
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeNoeudDAOImpl.java | 53
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/CategoryManager.java | 22
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/SimpleData.java | 35
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ExtensionFichiersToExport.java | 27
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserParticipantSearchRS.java | 45
fdx-consultation/fdxconsultation-dao-impl/src/main/resources/META-INF/persistence.xml | 122
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ApiTokenDto.java | 35
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericValidationIFaces.java | 99
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/TypeFichierExistNotException.java | 13
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/CriteriaEntityPersistedDAOImpl.java | 84
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierSearchRSImpl.java | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TransfertEncoder.java | 40
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierConfigurationDAO.java | 17
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelProperties.java | 37
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleDto.java | 60
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/validators/CriteriaQueryValidatorImpl.java | 244
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonUpdate.java | 101
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/integration/EchecIntegrationDAO.java | 16
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/CategoryRSImpl.java | 66
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalActionUtilisateurManagerImpl.java | 122
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/EditPasswordDto.java | 20
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordDAOImpl.java | 302
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelRouteConfiguration.java | 60
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalConnexionUtilisateurManagerImpl.java | 121
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersDecoder.java | 40
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/TransfertDAO.java | 37
fdx-commons/fdxcommons-core-ifaces/pom.xml | 133
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/SearchAnnotationOperateur.java | 19
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionUpdateIdColumnDefinition.java | 34
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableConfigurationManagerImpl.java | 24
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ConnexionStatutConsumer.java | 23
fdx-commons/fdxcommons-tools/pom.xml | 354
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameterFromView.java | 37
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/PermanentDeleteQuery.java | 50
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalActionUtilisateurManager.java | 30
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java | 189
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/UserSearch.java | 19
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/RoleDAOImpl.java | 53
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinition.java | 44
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/NoeudManagerImpl.java | 132
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleSlimDto.java | 33
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/HistoriqueMotDePasseManager.java | 36
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichier.java | 83
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/TypeFichiersToExport.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/DefaultPreparedStatementProcessor.java | 64
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/CategoryRS.java | 49
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/ColumnDefinitionSearch.java | 31
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/StructureLigneDAOImpl.java | 40
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/LoggingInterceptorBinding.java | 27
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/PaysSearch.java | 22
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/api/token/ApiTokenManager.java | 29
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ExportExcelGenerator.java | 66
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/base/BaseEntity.java | 54
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageDecoder.java | 39
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/UserActionLog.java | 63
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierConfigurationManagerImpl.java | 40
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/OrderByDefinition.java | 31
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ExtensionFichierDAOImpl.java | 51
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/chat/UserChatListRSImpl.java | 49
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserParticipantDAOIml.java | 81
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/ApiUserActionLogRS.java | 90
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/GlobalDasboardTypeFichierSearchRSImpl.java | 42
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/customtypefichier/DynamicClassCreator.java | 17
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ParticipantReporting.java | 56
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDaoDynamicWhereString.java | 76
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriterion.java | 47
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalActionUtilisateurRSImpl.java | 221
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/NoeudManager.java | 29
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TransfertEndpoint.java | 41
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnDeleterImpl.java | 74
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/chat/UserChatListRS.java | 31
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserValidationRS.java | 109
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/ProductionMetaDataDto.java | 31
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/HistoriqueMotDePasseManagerImpl.java | 52
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/integration/EchecIntegration.java | 33
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/DocumentDto.java | 24
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/JacksonMapperFormat.java | 26
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/TypeFichier.java | 121
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/JsonStructureDAO.java | 48
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/DynamicTableCreatorImpl.java | 38
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/DataConsumptionOperations.java | 32
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/FileDataProductionTask.java | 93
fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/web.xml | 16
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/StructureLigneToExport.java | 27
fdx-commons/fdxcommons-dao-impl/pom.xml | 180
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/ContainerContextDto.java | 34
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/RoutageReporting.java | 64
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/EnCoursProductionColumnDefinition.java | 40
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/configuration/CodeStatutHttpDAO.java | 14
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalConnexionUtilisateur.java | 111
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/RemoteConfiguration.java | 59
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/TransfertDataMessageRoute.java | 28
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielSearchRSImpl.java | 41
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumn.java | 36
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ReferentialConsumerRoute.java | 30
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/authentication/AuthenticationRS.java | 110
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierInsertMetaData.java | 22
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/enums/FileExtension.java | 28
fdx-commons/fdxcommons-core-ifaces/.gitignore | 50
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudDto.java | 55
fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/JAXRSConfiguration.java | 28
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/EchecIntegrationManagerImpl.java | 26
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java | 303
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/consumption/DataConsumptionOperationsRS.java | 63
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ReferentielsToExport.java | 27
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ParticipantToFichierDto.java | 23
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableName.java | 89
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueDAO.java | 21
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/api/token/ApiTokenDAOImpl.java | 52
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/GlobalDasboardSearchRS.java | 7
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/TableDefinitionSearch.java | 25
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordSlimDto.java | 27
fdx-commons/fdxcommons-dao-ifaces/.gitignore | 50
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionChecker.java | 17
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorker.java | 42
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java | 90
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonRessourceNotFoundException.java | 45
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/settings/DisplayOptionsDAOImpl.java | 62
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/configuration/CodeStatutHttpReporting.java | 41
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielSlimDto.java | 35
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/UserSecurity.java | 37
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ReferentielSearch.java | 22
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/CriteriaEntityPersistedManagerImpl.java | 225
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatIntegration.java | 13
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierSearch.java | 24
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ApiUserActionLogConsumer.java | 29
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistoriqueId.java | 23
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/favoritessearch/FavoriteSearchRS.java | 56
fdx-consultation/fdxconsultation-core-ifaces/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-service-ifaces/.gitignore | 50
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Pays.java | 98
fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ExtensionFichierReporting.java | 56
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SqlUtilities.java | 27
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationServerException.java | 18
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/metadata/ProductionMetaDataDAO.java | 19
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/message/systeme/MessageSystemeDAOImpl.java | 56
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/InsertionLocalDateTimeValue.java | 88
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardRequest.java | 20
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/SettingRSImpl.java | 28
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaData.java | 74
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/ReferentielConsumptionHelper.java | 12
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierUpdateMetaData.java | 16
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionToDeleteDAOImpl.java | 38
fdx-commons/fdxcommons-service-ifaces/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeNoeudDAO.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java | 88
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java | 168
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantSlimDto.java | 43
fdx-consultation/nb-configuration.xml | 18
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ConsultationTypeFichierInsertData.java | 44
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionToDelete.java | 31
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateTableIfNotExistQuery.java | 135
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/NoeudSearch.java | 22
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/ColumnDefinitionManagerImpl.java | 60
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfiguration.java | 76
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysSlimDto.java | 30
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToQueryCriterion.java | 49
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/ActionRS.java | 15
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategoryDto.java | 21
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiTokenStatut.java | 37
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeNoeudRS.java | 70
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/CommonsToolsEntity.java | 430
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/BetweenOperatorValues.java | 39
fdx-consultation/fdxconsultation-service-impl/.gitignore | 50
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/dataproduction/DataProductionHandler.java | 17
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/EnumValue.java | 19
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/utils/BaseEntityUtil.java | 34
fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/web.xml | 8
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierSearch.java | 23
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskInfo.java | 130
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DataIntegrationTimer.java | 31
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/sockets/DataProductionSessionHandler.java | 49
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudDto.java | 56
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ReferentielSlimResponse.java | 52
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/Utils.java | 48
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeParticipantRS.java | 70
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierSearchRSImpl.java | 50
fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/pom.xml | 148
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertMessageKey.java | 29
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationDto.java | 49
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/TypeFichierReportingManagerIFaces.java | 160
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericReportingIFaces.java | 57
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonCountQuery.java | 111
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierInsertData.java | 53
fdx-commons/fdxcommons-core-impl/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithSearchEntity.java | 37
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSearch.java | 24
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxUpdate.java | 69
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableColumnDataDto.java | 63
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ExtensionFichierDAO.java | 16
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielToImportDataReader.java | 13
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/JsonStructure.java | 77
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableConfigurationManager.java | 12
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxInsert.java | 24
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java | 232
fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ValidateurTypeFichierParserImpl.java | 335
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CustomQueries.java | 89
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/FdxTableUtils.java | 38
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/DataInMemoryHandler.java | 14
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordManager.java | 42
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceSlimDto.java | 30
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityPersisted.java | 166
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeParticipantManagerImpl.java | 138
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnCreatorImpl.java | 77
fdx-consultation/fdxconsultation-service-ifaces/pom.xml | 125
fdx-consultation/fdxconsultation-service-impl/pom.xml | 242
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ReferentielDataSaver.java | 13
fdx-consultation/fdxconsultation-dao-impl/nb-configuration.xml | 18
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DeleteDataProductionJobImpl.java | 101
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/TypeFichierReferentielSearchDAOImpl.java | 130
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationIndexColumnDefinition.java | 27
fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/utils/SearchCriteriaBuilderUtil.java | 166
fdx-commons/fdxcommons-service-ifaces/.gitignore | 50
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToJqplQueryCriterion.java | 50
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierManagerImpl.java | 94
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonTableDefinition.java | 59
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RequestHandler.java | 21
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/RoleSearchRS.java | 11
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RoutingChecker.java | 21
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistorique.java | 75
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/FonctionAggregationOperateur.java | 69
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateMiseAJourColumnDefinition.java | 34
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/HistoriqueMotDePasseDAOImpl.java | 85
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/favoritessearch/FavoriteSearchDAOImpl.java | 39
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateDataProductionQuery.java | 73
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/EchecIntegrationManager.java | 17
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoleSearch.java | 39
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/remoteaction/RemoteConfigurationRSImpl.java | 136
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/ReportingDto.java | 23
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionEncoder.java | 34
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantDto.java | 53
fdx-consultation/fdxconsultation-reporting/.gitignore | 50
fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielXmlDataReader.java | 14
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SensTransfert.java | 41
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/ParentIdColumnDefinition.java | 35
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierDAOImpl.java | 53
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonParsedQueryCriterion.java | 137
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordColumnDAOImpl.java | 45
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectDataProductionQuery.java | 35
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/ApiUserActionLogManagerImpl.java | 100
fdx-consultation/fdxconsultation-model/.gitignore | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/authentication/AuthenticationRSImpl.java | 177
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordUserSpecificSearchDAOImpl.java | 28
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserSlimDto.java | 42
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/StructureLigneSearch.java | 22
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityDecoder.java | 39
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierInsertMetaData.java | 16
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationValidationException.java | 29
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/SelectQueryResult.java | 37
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/pojo/TableDefinitionFiltered.java | 29
fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ExtensionFichierSearch.java | 22
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/UserDAOImpl.java | 140
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/dataproduction/DataProductionRSImpl.java | 164
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameter.java | 68
fdx-consultation/fdxconsultation-dao-impl/.gitignore | 50
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ApplicationEndpoint.java | 84
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityFromView.java | 89
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/PaysDAOImpl.java | 44
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/dto/ApiIntegrationDataDto.java | 71
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormDataIFaces.java | 38
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/integration/ColumnDefinitionResourceImpl.java | 32
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordUserSpecificSearchManager.java | 8
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/NoeudRS.java | 70
fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedDataRow.java | 123
fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalActionUtilisateurDAO.java | 17
fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ConnectedStatutsRoute.java | 28
fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/StructureLigne.java | 113
fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionDAOImpl.java | 53
fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/CommonReadManager.java | 133
fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java | 83
fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalConnexionUtilisateurRS.java | 94
984 files changed, 63,692 insertions(+), 0 deletions(-)
diff --git a/fdx-commons/README.md b/fdx-commons/README.md
new file mode 100644
index 0000000..33958c0
--- /dev/null
+++ b/fdx-commons/README.md
@@ -0,0 +1,43 @@
+
+# Back-end Projet MGT.FS
+
+## Tools :
+ 1. OS: Windows 10 ;
+ 2. IDE: NetBeans 12.0 ;
+ 3. Language: Java 8.0 ;
+ 4. Maven 3.1 ;
+ 5. WildFly 17 ;
+ 6. Git 2.41 ;
+ 7. EJB 3.0
+ 8. L'API JPA 2.1
+ 9. provider: Hibernate
+ 10. Transaction-type: JTA
+ 11. Data-Source
+ 12. Postgres SQL 14.3
+ 13. PostMan
+ 14. PowerAMC
+ 15. Bitbucket
+
+## prérequis :
+ 1. Installation du Serveur d'application WildFly ;
+ 2. Installation du SGBD ;
+ 3. Installation du JDK ;
+ 4. Installation de Maven ;
+
+
+
+## Lancement:
+ 1. Creation d'une Base de donnée sur postgres si vous utilisé postgres ;
+ 2. Creation d'une Datasource nomé fileDS dans WildFly ;
+ 3. Build du module parent ;
+ 4. deploiment du War (source_file_service-impl-1.0-SNAPSHOT.war) dans WildFly ;
+
+
+
+## Lien de Test de L'API (Collection Du Projet)
+
+
+
+## Team Dev
+ Victor E...
+ Leonel F...
diff --git a/fdx-commons/fdxcommons-core-ifaces/.gitignore b/fdx-commons/fdxcommons-core-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-commons/fdxcommons-core-ifaces/nb-configuration.xml b/fdx-commons/fdxcommons-core-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-core-ifaces/pom.xml b/fdx-commons/fdxcommons-core-ifaces/pom.xml
new file mode 100644
index 0000000..105de5b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/pom.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.core.ifaces</groupId>
+ <artifactId>fdxcommons-core-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.dao.ifaces</groupId>
+ <artifactId>fdxcommons-dao-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericDAOLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericManagerLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.3.0.Final</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+ <name>fdxcommons-core-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/abstracts/CustomManagerIFaces.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/abstracts/CustomManagerIFaces.java
new file mode 100644
index 0000000..520808b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/abstracts/CustomManagerIFaces.java
@@ -0,0 +1,136 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.abstracts;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.search.SearchColumn;
+import com.megatim.fdxcommons.tools.utils.SqlUtilities;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ * @param <T> : Entite reelle
+ * @param <ID> : Classe de l'identifiant
+ * @param <S> : entité de recherche
+ * @param <U> : entité qui représente un utilisateur
+ */
+public interface CustomManagerIFaces<T, ID, S, U> {
+
+ <R extends CustomDAOIfaces<T, ID, S>> R getDao();
+
+ default T save(T entity) {
+ return getDao().save(entity);
+ }
+
+ default void delete(T entity) {
+ getDao().delete(entity);
+ }
+
+ public default T getById(ID id, U connectedUser) {
+ T entity = getDao().getById(id);
+ return entity;
+ }
+
+ public default T getById(ID id) {
+
+ return getDao().getById(id);
+ }
+
+ public default List<T> findWithPagination(Integer pageNumber, Integer pagesize, S searchEntity, U connectedUser) {
+ return getDao().findWithPagination(pageNumber, pagesize, searchEntity);
+ }
+
+ public default List<T> getAll(S searchEntity, U connectedUser) {
+ List<T> data = getDao().getAll(searchEntity);
+ return data;
+ }
+
+ public default List<T> getAll(S searchEntity) {
+ List<T> data = getDao().getAll(searchEntity);
+ return data;
+ }
+
+ public default List<T> getAll() {
+ return getDao().getAll(null);
+ }
+
+ public default Long count(S searchEntity) {
+ return getDao().count(searchEntity);
+ }
+
+ public default List<SearchColumn> getSearchColumns(Class<T> classe) {
+ List<SearchColumn> searchColumns = new ArrayList<>();
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+
+ for (Field f : fields) {
+ CriteriaEntitySearch searchAnn = f.getAnnotation(CriteriaEntitySearch.class);
+ if (searchAnn != null) {
+ SearchColumn searchColumn = new SearchColumn();
+ searchColumn.setLibelle(searchAnn.libelle());
+// searchColumn.setName(searchAnn.fieldName().isEmpty() ? f.getName() : searchAnn.fieldName());
+
+ TypeDonnee typeDonnee = getTypeDonnee(f, searchAnn);
+
+ if (typeDonnee != null) {
+ searchColumn.setTypeDonnee(typeDonnee);
+ searchColumns.add(searchColumn);
+ }
+
+ }
+ }
+ return searchColumns;
+ }
+
+ public default TypeDonnee getTypeDonnee(Field field, CriteriaEntitySearch searchAnn) {
+ Class<?> fieldClass = field.getType();
+ TypeDonnee typeDonnee = null;
+
+ if (fieldClass.isPrimitive()) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+
+ } else if (fieldClass.isEnum()) {
+ Enumerated enumerated = field.getAnnotation(Enumerated.class);
+ typeDonnee = enumerated == null || enumerated.value().equals(EnumType.ORDINAL) ? TypeDonnee.NUMERIQUE : TypeDonnee.ALPHANUMERIQUE;
+
+ } else if (!fieldClass.isInterface() && !Collection.class.isAssignableFrom(fieldClass) && !Map.class.isAssignableFrom(fieldClass)) {
+ String[] fieldPath = searchAnn.fieldName().split("\\.");
+ if (fieldPath.length < 2) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+ } else {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(getFieldType(fieldClass, Arrays.copyOfRange(fieldPath, 1, fieldPath.length)));
+ }
+ }
+
+ return typeDonnee;
+ }
+
+ public default Class<?> getFieldType(Class<?> classe, String[] fieldPath) {
+ String fieldName = fieldPath[0];
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+ Optional<Field> optField = fields.stream().filter(f -> f.getName().equals(fieldName)).findFirst();
+
+ if (optField.isPresent()) {
+ Field field = optField.get();
+ if (fieldPath.length == 1) {
+ return field.getType();
+ } else {
+ return getFieldType(field.getType(), Arrays.copyOfRange(fieldPath, 1, fieldPath.length));
+ }
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/customtypefichier/DynamicClassCreator.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/customtypefichier/DynamicClassCreator.java
new file mode 100644
index 0000000..8cbdbc8
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/customtypefichier/DynamicClassCreator.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.customtypefichier;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DynamicClassCreator {
+
+ void createDynamicClasses(List<TableDefinition> tableDefinitions);
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/dataproduction/DataProductionHandler.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/dataproduction/DataProductionHandler.java
new file mode 100644
index 0000000..6009568
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/dataproduction/DataProductionHandler.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionHandler {
+
+ CommonDataProduction handle(String codeTypeFichier, String connectedParticipant, String referentielVersion, String fileName);
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportReferentielHelper.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportReferentielHelper.java
new file mode 100644
index 0000000..166836b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportReferentielHelper.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxcommons.core.ifaces.db;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import java.io.File;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface ImportReferentielHelper {
+
+ ReferentielToImportData extractData(File referentielFile) throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportZipValidatorIfaces.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportZipValidatorIfaces.java
new file mode 100644
index 0000000..eaf6f08
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ImportZipValidatorIfaces.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxcommons.core.ifaces.db;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import java.io.File;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ImportZipValidatorIfaces {
+
+ /**
+ * Méthode qui extrait les informations des colonnes dans chaque validateur
+ *
+ * @param validatorDir
+ * @param referentielToImportData
+ * @return : Map<version_referentiel,
+ * Map<codeTypeFichier, Liste_colonnes_validateur>> @throws Exception
+ * @throws java.lang.Exception
+ */
+ public List<TableDefinition> getTableDefinitions(File validatorDir, final ReferentielToImportData referentielToImportData) throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ReferentielDataSaver.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ReferentielDataSaver.java
new file mode 100644
index 0000000..50fd803
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/ReferentielDataSaver.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.core.ifaces.db;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielDataSaver {
+
+ public void persist(ReferentielToImportData referentielToImportData) throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/CriteriaQueryValidator.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/CriteriaQueryValidator.java
new file mode 100644
index 0000000..58f8448
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/CriteriaQueryValidator.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxcommons.core.ifaces.db.validators;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface CriteriaQueryValidator {
+
+ List<String> validate(CriteriaEntity criterion, Map<String, ColumnDefinition> columnDefinitionsMap);
+
+ public BetweenOperatorValues getBetweenOperatorValues(Object value);
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/ParametersValidator.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/ParametersValidator.java
new file mode 100644
index 0000000..38726d8
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/db/validators/ParametersValidator.java
@@ -0,0 +1,18 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.db.validators;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.QueryParameterFromView;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ParametersValidator {
+ List<String> validate(List<QueryParameterFromView> parametersFromView, Map<String, ColumnDefinition> columnDefinitionsMap);
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/DataInMemoryHandler.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/DataInMemoryHandler.java
new file mode 100644
index 0000000..909a561
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/DataInMemoryHandler.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxcommons.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataInMemoryHandler {
+
+ void initializeDataInMemory();
+
+ DataInMemory getDataInMemory();
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/ReferentielConsumptionHelper.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/ReferentielConsumptionHelper.java
new file mode 100644
index 0000000..c0d6dfa
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/ReferentielConsumptionHelper.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielConsumptionHelper {
+
+ void consume(ReferentielToImportData referentielToImportData) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/DynamicTableCreator.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/DynamicTableCreator.java
new file mode 100644
index 0000000..0015397
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/DynamicTableCreator.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import java.util.List;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface DynamicTableCreator {
+
+ public void createDynamicTables(List<TableDefinition> tableDefinitions) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielToImportDataReader.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielToImportDataReader.java
new file mode 100644
index 0000000..6780014
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielToImportDataReader.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import java.io.File;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface ReferentielToImportDataReader {
+
+ public ReferentielToImportData getData(File referentielDirectory) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielXmlDataReader.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielXmlDataReader.java
new file mode 100644
index 0000000..68357ce
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ReferentielXmlDataReader.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import java.io.File;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface ReferentielXmlDataReader {
+
+ void readData(File referentielXmlFileDirectory, ReferentielToImportData referentielToImportData) throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionChecker.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionChecker.java
new file mode 100644
index 0000000..840a18b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionChecker.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableDefinitionChecker {
+ boolean isSame(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef, List<NatureProductionFichier> natureProductionFichiers);
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionFilter.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionFilter.java
new file mode 100644
index 0000000..011814d
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/TableDefinitionFilter.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import com.megatim.fdxcommons.model.referentiel.historique.pojo.TableDefinitionFiltered;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableDefinitionFilter {
+
+ public TableDefinitionFiltered doFilter(String previousRef, ReferentielToImportData referentielToImportData, List<ReferentielIntegrationHistorique> refsHistoriqueIntegration);
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ValidateurTypeFichierParser.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ValidateurTypeFichierParser.java
new file mode 100644
index 0000000..b8d69bf
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/helper/referentiel/ValidateurTypeFichierParser.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.core.ifaces.helper.referentiel;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ValidateurTypeFichierParser {
+
+ public TableDefinition parseToColumnDefinition(String validatorPath, String codeTypeFichier, String referentielVersion) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/integration/AppColumnCreator.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/integration/AppColumnCreator.java
new file mode 100644
index 0000000..b7e61f5
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/integration/AppColumnCreator.java
@@ -0,0 +1,13 @@
+/*
+ * 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.fdxcommons.core.ifaces.integration;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AppColumnCreator {
+ void create();
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/AfterUserAction.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/AfterUserAction.java
new file mode 100644
index 0000000..19956c8
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/AfterUserAction.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.interceptor;
+
+import com.megatim.fdxcommons.model.log.ContainerContextDto;
+import com.megatim.fdxcommons.model.log.UserActionLog;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AfterUserAction {
+ UserActionLog filter(ContainerContextDto containerContext) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/BeforeAction.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/BeforeAction.java
new file mode 100644
index 0000000..3d34b1a
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/BeforeAction.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.interceptor;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ResourceInfo;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface BeforeAction {
+ void filter(ContainerRequestContext crc, ResourceInfo resourceInfo);
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/InterceptorHandler.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/InterceptorHandler.java
new file mode 100644
index 0000000..a541521
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/InterceptorHandler.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.interceptor;
+
+import java.lang.reflect.Parameter;
+import javax.ws.rs.core.MultivaluedMap;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface InterceptorHandler {
+
+ String finalMessage(LoggingInterceptorBinding interceptorBinding, Parameter[] parameters, MultivaluedMap<String, String> queryParams, Object requestEntity, Object responseEntity) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/LoggingInterceptorBinding.java b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/LoggingInterceptorBinding.java
new file mode 100644
index 0000000..beac54b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-ifaces/src/main/java/com/megatim/fdxcommons/core/ifaces/interceptor/LoggingInterceptorBinding.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.core.ifaces.interceptor;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.interceptor.InterceptorBinding;
+
+/**
+ *
+ * @author ASUS
+ */
+@InterceptorBinding
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoggingInterceptorBinding {
+
+ public String message();
+
+ public Class<?> classe() default String.class; //classe de l'objet retourné
+
+ public boolean shouldCopyData() default true;
+}
diff --git a/fdx-commons/fdxcommons-core-impl/.gitignore b/fdx-commons/fdxcommons-core-impl/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-commons/fdxcommons-core-impl/nb-configuration.xml b/fdx-commons/fdxcommons-core-impl/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-core-impl/pom.xml b/fdx-commons/fdxcommons-core-impl/pom.xml
new file mode 100644
index 0000000..c2bbf54
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/pom.xml
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.core.impl</groupId>
+ <artifactId>fdxcommons-core-impl</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <!-- <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-bom</artifactId>
+ <version>3.14.8</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>-->
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.dao.impl</groupId>
+ <artifactId>fdxcommons-dao-impl</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.core.ifaces</groupId>
+ <artifactId>fdxcommons-core-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericManagerLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.ibm.icu</groupId>
+ <artifactId>icu4j</artifactId>
+ <version>61.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ <version>1.6</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.11.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <version>3.14.8</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency> -->
+
+ <!-- <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-endpointdsl</artifactId>
+ <version>3.14.8</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency> -->
+
+ <!-- <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-cdi</artifactId>
+ <version>3.14.8</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>-->
+
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxcommons-core-impl</name>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportReferentielHelperImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportReferentielHelperImpl.java
new file mode 100644
index 0000000..fcda00a
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportReferentielHelperImpl.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxcommons.core.impl.db;
+
+import com.megatim.fdxcommons.core.ifaces.db.ImportReferentielHelper;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ReferentielToImportDataReader;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import java.io.File;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class ImportReferentielHelperImpl implements ImportReferentielHelper {
+
+ @Inject
+ private ReferentielToImportDataReader referentielToImportDataReader;
+
+
+ @Override
+ public ReferentielToImportData extractData(File referentielFile) throws Exception {
+ return referentielToImportDataReader.getData(referentielFile);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportZipValidatorImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportZipValidatorImpl.java
new file mode 100644
index 0000000..292bb60
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/ImportZipValidatorImpl.java
@@ -0,0 +1,133 @@
+package com.megatim.fdxcommons.core.impl.db;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.core.ifaces.db.ImportZipValidatorIfaces;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ValidateurTypeFichierParser;
+import com.megatim.fdxcommons.tools.exceptions.ImportReferentielException;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.LinkOption;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ImportZipValidatorImpl implements ImportZipValidatorIfaces {
+
+ @Inject
+ private ValidateurTypeFichierParser validateurTypeFichierParser;
+
+ @Override
+ public List<TableDefinition> getTableDefinitions(File validatorDir, ReferentielToImportData referentielToImportData) throws Exception {
+
+ List<TableDefinition> tableDefinitions = new ArrayList<>();
+
+ if (validatorDir.isDirectory()) {
+ for (Referentiel referentiel : referentielToImportData.getReferentiels()) {
+ Path referentielPath = Paths.get(validatorDir.getAbsolutePath(), referentiel.getVersion());
+
+ //S'il n'existe pas un chemin correspondant à la version du referentiel en_cours
+ if (!Files.exists(referentielPath, LinkOption.NOFOLLOW_LINKS)) {
+ if (referentiel.getVersion().equals(referentielToImportData.getReferentielEnCours().getVersion())) {
+ throw new ImportReferentielException("Le répertoire '" + referentiel.getVersion() + "' des validateurs est introuvable");
+ } else {
+ continue;
+ }
+ }
+
+ //Si ce chemin n'est pas celui d'un répertoire
+ if (!Files.isDirectory(referentielPath, LinkOption.NOFOLLOW_LINKS)) {
+ throw new ImportReferentielException("'" + referentiel.getVersion() + "' n'est pas un répertoire dans le repertoire des validateurs");
+ }
+
+ //Liste des configurations de validateurs associées au reférentiel en cours de traitement
+ List<ValidateurFichierConfiguration> validateursConfiguratioForReferentiel
+ = validateurFichierConfigurationForCurrentReferentiel(referentiel, referentielToImportData);
+
+ Map<String, ValidateurFichierConfiguration> mapValidateurConfByFileName = fileNameToValidateurConfiguration(validateursConfiguratioForReferentiel);
+
+ //Liste des répertoires des participants du referentiel en cours de traitement
+ File[] participantDirectories = (new File(validatorDir.getAbsolutePath(), referentiel.getVersion())).listFiles();
+ for (File participantDirectory : participantDirectories) {
+
+ //Si le fichier en cours de traitement est un répertoire
+ if (participantDirectory.isDirectory()) {
+
+ //Liste des validateurs contenus dans le dossier d'un participant
+ File[] validateurs = participantDirectory.listFiles();
+
+ for (File validatorFile : validateurs) {
+
+ if (validatorFile.isFile()) {
+
+ if (mapValidateurConfByFileName.containsKey(validatorFile.getName())) {
+ TableDefinition tableDefinition = new TableDefinition();
+ String codeTypeFichier = mapValidateurConfByFileName.get(validatorFile.getName()).getTypeFichier().getCode();
+
+ try {
+ tableDefinition = validateurTypeFichierParser.parseToColumnDefinition(validatorFile.getAbsolutePath(),
+ codeTypeFichier, referentiel.getVersion());
+ } catch (Exception ex) {
+ tableDefinition.setColumnDefinitions(new ArrayList<>());
+ Logger.getLogger(ImportZipValidatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ if (tableDefinition.getColumnDefinitions() != null && !tableDefinition.getColumnDefinitions().isEmpty()) {
+ tableDefinitions.add(tableDefinition);
+ }
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+
+ return tableDefinitions;
+ }
+
+ private List<ValidateurFichierConfiguration> validateurFichierConfigurationForCurrentReferentiel(Referentiel referentielEnCours, ReferentielToImportData referentielToImportData) {
+ return referentielToImportData.getValidateurFichierConfigurations()
+ .stream()
+ .filter(p -> p.getReferentiel().getVersion().equals(referentielEnCours.getVersion()))
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * Classer les configurations des validateurs par nom du fichier
+ *
+ * @param validateursConf
+ * @return
+ */
+ private Map<String, ValidateurFichierConfiguration> fileNameToValidateurConfiguration(List<ValidateurFichierConfiguration> validateursConfiguration) {
+ Map<String, ValidateurFichierConfiguration> mapValidateurConf = new HashMap<>();
+
+ for (ValidateurFichierConfiguration vc : validateursConfiguration) {
+ File file = new File(vc.getFileName());
+ /**
+ * Dans le fichier zip du referentiel, le nom du fichier de
+ * validateur est en chemin absolu Raison pour laquelle il faut
+ * passer un objet de type 'File' afin de recupérer le nom relatif
+ * du fichier
+ */
+ mapValidateurConf.put(file.getName(), vc);
+ }
+
+ return mapValidateurConf;
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/validators/CriteriaQueryValidatorImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/validators/CriteriaQueryValidatorImpl.java
new file mode 100644
index 0000000..7a398f8
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/db/validators/CriteriaQueryValidatorImpl.java
@@ -0,0 +1,244 @@
+package com.megatim.fdxcommons.core.impl.db.validators;
+
+import static com.megatim.fdxcommons.model.enumeration.Operateur.*;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeParseException;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.Dependent;
+import com.megatim.fdxcommons.core.ifaces.db.validators.CriteriaQueryValidator;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class CriteriaQueryValidatorImpl implements CriteriaQueryValidator {
+
+ @Override
+ public List<String> validate(CriteriaEntity criterion, Map<String, ColumnDefinition> columnDefinitionsMap) {
+ List<String> errors = new ArrayList<>();
+// int index = 1;
+// String numeroElt = " : Elément numéro " + index;
+ TypeDonnee typeDonnee = null;
+
+ if (criterion != null && isNotEmptyCriteria(criterion)) {
+ if (criterion.getSubCriterias().isEmpty()) {
+ if (!validateCriteriaNomColonne(columnDefinitionsMap, criterion)) {
+ errors.add("Colonne '" + criterion.getNomColonne() + "' des critères de sélection est introuvable");
+
+ } else if ((typeDonnee = TypeDonnee.fromValeur(columnDefinitionsMap.get(criterion.getNomColonne().toLowerCase()).getTypeDonnee())) == null) {
+ errors.add("Le type de la colonne '" + criterion.getNomColonne() + "est introuvable");
+
+ } else if (!validateCriteriaEntityValue(criterion, typeDonnee)) {
+ errors.add("Type de données de la colonne " + criterion.getNomColonne() + " incorrect");
+ }
+ } else {
+ if (criterion.getCriteriaLogicConnector() == null) {
+ errors.add("Le connecteur logique est absent");
+ }
+ for (CriteriaEntity c : criterion.getSubCriterias()) {
+ errors.addAll(validate(c, columnDefinitionsMap));
+ }
+ }
+ }
+ return errors;
+ }
+
+ private boolean validateCriteriaNomColonne(Map<String, ColumnDefinition> columnDefinitionsMap, CriteriaEntity c) {
+ return c.getNomColonne() != null
+ && !c.getNomColonne().isEmpty()
+ && columnDefinitionsMap.containsKey(c.getNomColonne().toLowerCase());
+ }
+
+ private boolean validateCriteriaEntityValue(CriteriaEntity criteriaEntity, TypeDonnee typeDonnee) {
+ switch (criteriaEntity.getOperateur()) {
+ case LIKE:
+ return (criteriaEntity.getCriteriaValue() instanceof String) && columTypeIsString(typeDonnee);
+ case IN:
+ case NOT_IN:
+ return (criteriaEntity.getCriteriaValue() instanceof List<?>) && elementsOfList((List) criteriaEntity.getCriteriaValue(), typeDonnee);
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case EQUALS:
+ case NOT_EQUALS:
+ return (criteriaEntity.getCriteriaValue() instanceof Comparable<?>) && criteriaValueHasCorrectType(criteriaEntity.getCriteriaValue(), typeDonnee);
+ case BETWEEN:
+ case NOT_BETWEEN:
+ BetweenOperatorValues betweenOperatorValues = getBetweenOperatorValues(criteriaEntity.getCriteriaValue());
+ criteriaEntity.setCriteriaValue(betweenOperatorValues);
+
+ return betweenOperatorValues != null
+ && criteriaValueHasCorrectType(betweenOperatorValues.getLowerBound(), typeDonnee)
+ && criteriaValueHasCorrectType(betweenOperatorValues.getUpperBound(), typeDonnee)
+ && betweenOperatorValuesAreCorrect(betweenOperatorValues, typeDonnee);
+ case IS_NULL:
+ case IS_NOT_NULL:
+ return criteriaEntity.getCriteriaValue() == null;
+ }
+ return false;
+ }
+
+ @Override
+ public BetweenOperatorValues getBetweenOperatorValues(Object value) {
+ BetweenOperatorValues betweenOperatorValues = null;
+ if (!(value instanceof LinkedHashMap)) {
+ throw new CommonApplicationValidationException("LinkedHashMap est attendu");
+ }
+ LinkedHashMap<String, String> map = (LinkedHashMap) value;
+ String lowerBound = null;
+ String upperBound = null;
+
+ for (String key : map.keySet()) {
+ if (key.equalsIgnoreCase("lowerBound")) {
+ lowerBound = map.get(key);
+ }
+ if (key.equalsIgnoreCase("upperBound")) {
+ upperBound = map.get(key);
+ }
+ }
+ StringBuilder message = new StringBuilder("");
+
+ if (lowerBound == null) {
+ message.append("Borne inférieure absente\n");
+ }
+ if (upperBound == null) {
+ message.append("Borne supérieure absente");
+ }
+ if (message.length() > 0) {
+ throw new CommonApplicationValidationException(message.toString());
+ }
+ betweenOperatorValues = new BetweenOperatorValues(lowerBound, upperBound);
+
+ return betweenOperatorValues;
+ }
+
+ /**
+ * Vérifier que le borne inférieure est bel et bien inférieure à la borne
+ * supérieure
+ *
+ * @param betweenOperatorValues
+ * @param columnType
+ * @return
+ */
+ private boolean betweenOperatorValuesAreCorrect(BetweenOperatorValues betweenOperatorValues, TypeDonnee typeDonnee) {
+ boolean result = false;
+ switch (typeDonnee) {
+
+ case NUMERIQUE:
+ try {
+ Long lowerBound = Long.valueOf(betweenOperatorValues.getLowerBound().toString());
+ Long upperBound = Long.valueOf(betweenOperatorValues.getUpperBound().toString());
+
+ result = lowerBound <= upperBound;
+ if (!result) {
+ throw new CommonApplicationValidationException("La borne inférieure ne peut être supérieure à la borne supérieure");
+ }
+ } catch (NumberFormatException ex) {
+ }
+ break;
+
+ case DECIMAL:
+ try {
+ BigDecimal lowerBound = new BigDecimal(betweenOperatorValues.getLowerBound().toString());
+ BigDecimal upperBound = new BigDecimal(betweenOperatorValues.getUpperBound().toString());
+
+ result = lowerBound.compareTo(upperBound) <= 0;
+ if (!result) {
+ throw new CommonApplicationValidationException("La borne inférieure ne peut être supérieure à la borne supérieure");
+ }
+ } catch (NumberFormatException ex) {
+ }
+ break;
+
+ case DATE:
+ try {
+ Timestamp lowerBound = Timestamp.valueOf(LocalDateTime.parse(betweenOperatorValues.getLowerBound().toString()));
+ Timestamp upperBound = Timestamp.valueOf(LocalDateTime.parse(betweenOperatorValues.getUpperBound().toString()));
+
+ result = lowerBound.before(upperBound);
+ if (!result) {
+ throw new CommonApplicationValidationException("La borne inférieure ne peut être supérieure à la borne supérieure");
+ }
+ } catch (DateTimeParseException ex) {
+ }
+ break;
+
+ default:
+ throw new CommonApplicationValidationException("L'opérarateur 'BETWEEN' n'est pas valable pour ce type de données " + typeDonnee);
+
+ }
+ return result;
+ }
+
+ private boolean elementsOfList(List<?> elements, TypeDonnee typeDonnee) {
+ boolean result = true;
+
+ for (Object elt : elements) {
+ result = criteriaValueHasCorrectType(elt, typeDonnee);
+
+ if (!result) {
+ break;
+ }
+ }
+ return result;
+ }
+
+ private boolean criteriaValueHasCorrectType(Object value, TypeDonnee typeDonnee) {
+ boolean result = false;
+
+ switch (typeDonnee) {
+ case NUMERIQUE:
+ try {
+ Long.valueOf(value.toString());
+ result = true;
+ } catch (NumberFormatException ex) {
+ }
+ break;
+
+ case DECIMAL:
+ try {
+ new BigDecimal(value.toString());
+ result = true;
+ } catch (Exception ex) {
+ }
+ break;
+
+ case DATE:
+ try {
+ Timestamp.valueOf(LocalDateTime.parse(value.toString()));
+ result = true;
+ } catch (IllegalArgumentException ex) {
+ }
+ break;
+
+ case ALPHANUMERIQUE:
+ result = value instanceof String;
+ break;
+
+ default:
+ throw new CommonApplicationValidationException("Type de données inconnu");
+ }
+ return result;
+ }
+
+ private boolean columTypeIsString(TypeDonnee typeDonnee) {
+ return typeDonnee.equals(TypeDonnee.ALPHANUMERIQUE);
+ }
+
+ private boolean isNotEmptyCriteria(CriteriaEntity c) {
+ return c.getNomColonne() != null && !c.getNomColonne().isEmpty() && c.getOperateur() != null
+ || c.getSubCriterias() != null && !c.getSubCriterias().isEmpty();
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielToImportDataReaderImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielToImportDataReaderImpl.java
new file mode 100644
index 0000000..8df963a
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielToImportDataReaderImpl.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxcommons.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.db.ImportZipValidatorIfaces;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ReferentielToImportDataReader;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ReferentielXmlDataReader;
+import com.megatim.fdxcommons.tools.exceptions.ImportReferentielException;
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.CommonAppContext;
+import com.megatim.fdxcommons.tools.AppFileUtils;
+import java.io.File;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class ReferentielToImportDataReaderImpl implements ReferentielToImportDataReader {
+
+ @Inject
+ private ReferentielXmlDataReader referentielXmlDataReader;
+
+ @Inject
+ private ImportZipValidatorIfaces importValidator;
+
+ @Override
+ public ReferentielToImportData getData(File referentielFile) throws Exception {
+
+ //On décompresse le fichier zip du référentiel dans le répertoire temporaire du serveur
+ File unzipDirectory = AppFileUtils.unzipFileInDirectory(referentielFile.getAbsolutePath(), CommonAppContext.TEMP_DIR);
+
+ //Dans le répertoire décompressé, on décompresse encore le fichier contenant les fichiers xml des entités du référentiel
+ File unzipReferentielDirectory = AppFileUtils.unzipFileInDirectory((unzipDirectory + File.separator + CommonAppContext.REFERENTIEL_ZIP_FILE_NAME), unzipDirectory.getAbsolutePath());
+
+ //Indique le répertoire des validateurs du référentiel
+ File validateursDirectory = new File(unzipDirectory + File.separator + CommonAppContext.UNZIP_REFERENTIEL_VALIDATEUR_DIR_NAME);
+
+ ReferentielToImportData referentielToImportData = new ReferentielToImportData();
+ referentielToImportData.setFileName(referentielFile.getName());
+ referentielXmlDataReader.readData(unzipReferentielDirectory, referentielToImportData);
+
+ Referentiel referentielEncours = getReferentielEncours(referentielToImportData);
+ referentielToImportData.setReferentielEnCours(referentielEncours);
+
+ //On extrait la définition des tables associées aux validateur (structures lignes) du référentiel EN COURS
+ List<TableDefinition> tableDefinitions = importValidator.getTableDefinitions(validateursDirectory, referentielToImportData);
+ referentielToImportData.setTableDefinitions(tableDefinitions);
+
+ return referentielToImportData;
+
+ }
+
+ private Referentiel getReferentielEncours(ReferentielToImportData referentielToImportData) throws Exception {
+ List<Referentiel> referentiels = referentielToImportData.getReferentiels()
+ .stream()
+ .filter(p -> p.getStatutReferentiel().equals(StatutReferentiel.EN_COURS))
+ .collect(Collectors.toList());
+
+ if (referentiels == null || referentiels.isEmpty()) {
+ throw new ImportReferentielException("Cette archive n'a pas de referentiel avec le statut EN COURS");
+ }
+
+ if (referentiels.size() > 1) {
+ throw new ImportReferentielException(referentiels.size() + " réferentiels en cours trouvés");
+ }
+
+ return referentiels.get(0);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielXmlDataReaderImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielXmlDataReaderImpl.java
new file mode 100644
index 0000000..6c71a9b
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ReferentielXmlDataReaderImpl.java
@@ -0,0 +1,175 @@
+package com.megatim.fdxcommons.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ReferentielXmlDataReader;
+import com.megatim.fdxcommons.model.jaxb.ApplicationSourcesToExport;
+import com.megatim.fdxcommons.model.jaxb.ExtensionFichiersToExport;
+import com.megatim.fdxcommons.model.jaxb.GroupeNoeudsToExport;
+import com.megatim.fdxcommons.model.jaxb.GroupeParticipantsToExport;
+import com.megatim.fdxcommons.model.jaxb.NatureProductionFichiersToExport;
+import com.megatim.fdxcommons.model.jaxb.NoeudsToExport;
+import com.megatim.fdxcommons.model.jaxb.ParticipantsToExport;
+import com.megatim.fdxcommons.model.jaxb.PaysToExport;
+import com.megatim.fdxcommons.model.jaxb.ReferentielsToExport;
+import com.megatim.fdxcommons.model.jaxb.RoutagesToExport;
+import com.megatim.fdxcommons.model.jaxb.StructureLigneToExport;
+import com.megatim.fdxcommons.model.jaxb.TypeFichiersToExport;
+import com.megatim.fdxcommons.model.jaxb.ValidateurFichierConfigurationToExport;
+import com.megatim.fdxcommons.model.jaxb.ValidateurFichierToExport;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.core.impl.tools.XmlUtils;
+import java.io.File;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class ReferentielXmlDataReaderImpl implements ReferentielXmlDataReader {
+
+ @Override
+ public void readData(File referentielXmlFileDirectory, ReferentielToImportData referentielToImportData) throws Exception {
+
+ if (referentielXmlFileDirectory.isDirectory()) {
+
+ File[] xmlFiles = referentielXmlFileDirectory.listFiles();
+
+ for (File xmlFile : xmlFiles) {
+
+ switch (xmlFile.getName()) {
+
+ case "applicationSources.xml":
+ readApplicationSources(xmlFile, referentielToImportData);
+ break;
+
+ case "extensionFichiers.xml":
+ readExtensionFichiers(xmlFile, referentielToImportData);
+ break;
+
+ case "groupeNoeuds.xml":
+ readGroupeNoeuds(xmlFile, referentielToImportData);
+ break;
+
+ case "structureLignes.xml":
+ readStructureLignes(xmlFile, referentielToImportData);
+ break;
+
+ case "validateurFichiers.xml":
+ readValidateurFichiers(xmlFile, referentielToImportData);
+ break;
+
+ case "groupeParticipants.xml":
+ readGroupeParticipants(xmlFile, referentielToImportData);
+ break;
+
+ case "noeuds.xml":
+ readNoeuds(xmlFile, referentielToImportData);
+ break;
+
+ case "participants.xml":
+ readParticipants(xmlFile, referentielToImportData);
+ break;
+
+ case "pays.xml":
+ readPays(xmlFile, referentielToImportData);
+ break;
+
+ case "referentiels.xml":
+ readReferentiels(xmlFile, referentielToImportData);
+ break;
+
+ case "routages.xml":
+ readRoutages(xmlFile, referentielToImportData);
+ break;
+
+ case "typeFichiers.xml":
+ readTypeFichiers(xmlFile, referentielToImportData);
+ break;
+
+ case "validateurFichierConfigurations.xml":
+ readValidateurFichierConfiguration(xmlFile, referentielToImportData);
+ break;
+
+ case "natureProductionFichiers.xml":
+ readNatureProductionFichiers(xmlFile, referentielToImportData);
+ break;
+ }
+ }
+
+ }
+
+ }
+
+ private void readValidateurFichierConfiguration(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ValidateurFichierConfigurationToExport validateurFichierConfigurationToExport = (ValidateurFichierConfigurationToExport) XmlUtils.unMarshal(xmlFile, ValidateurFichierConfigurationToExport.class);
+ List<ValidateurFichierConfiguration> validateurFichierConfigurations = validateurFichierConfigurationToExport.getValidateurFichierConfigurationList().getValidateurFichierConfigurationList();
+ referentielToImportData.setValidateurFichierConfigurations(validateurFichierConfigurations);
+ }
+
+ private void readTypeFichiers(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ TypeFichiersToExport typeFichiersToExport = (TypeFichiersToExport) XmlUtils.unMarshal(xmlFile, TypeFichiersToExport.class);
+ referentielToImportData.setTypeFichiers(typeFichiersToExport.getTypeFichiersList());
+ }
+
+ private void readRoutages(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ RoutagesToExport routagesToExport = (RoutagesToExport) XmlUtils.unMarshal(xmlFile, RoutagesToExport.class);
+ referentielToImportData.setRoutages(routagesToExport.getRoutageList());
+ }
+
+ private void readReferentiels(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ReferentielsToExport referentielsToExport = (ReferentielsToExport) XmlUtils.unMarshal(xmlFile, ReferentielsToExport.class);
+ referentielToImportData.setReferentiels(referentielsToExport.getReferentielList());
+ }
+
+ private void readPays(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ PaysToExport paysToExport = (PaysToExport) XmlUtils.unMarshal(xmlFile, PaysToExport.class);
+ referentielToImportData.setPays(paysToExport.getPaysList());
+ }
+
+ private void readParticipants(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ParticipantsToExport participantsToExport = (ParticipantsToExport) XmlUtils.unMarshal(xmlFile, ParticipantsToExport.class);
+ referentielToImportData.setParticipants(participantsToExport.getParticipants());
+ }
+
+ private void readNoeuds(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ NoeudsToExport noeudsToExport = (NoeudsToExport) XmlUtils.unMarshal(xmlFile, NoeudsToExport.class);
+ referentielToImportData.setNoeuds(noeudsToExport.getNoeuds());
+ }
+
+ private void readGroupeParticipants(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ GroupeParticipantsToExport groupeParticipantsToExport = (GroupeParticipantsToExport) XmlUtils.unMarshal(xmlFile, GroupeParticipantsToExport.class);
+ referentielToImportData.setGroupeParticipants(groupeParticipantsToExport.getGroupeParticipants());
+ }
+
+ private void readValidateurFichiers(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ValidateurFichierToExport validateurFichierToExport = (ValidateurFichierToExport) XmlUtils.unMarshal(xmlFile, ValidateurFichierToExport.class);
+ referentielToImportData.setValidateurFichiers(validateurFichierToExport.getValidateurFichierList());
+ }
+
+ private void readStructureLignes(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ StructureLigneToExport structureLigneToExport = (StructureLigneToExport) XmlUtils.unMarshal(xmlFile, StructureLigneToExport.class);
+ referentielToImportData.setStructureLignes(structureLigneToExport.getStructureLigneList());
+ }
+
+ private void readGroupeNoeuds(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ GroupeNoeudsToExport groupeNoeudsToExport = (GroupeNoeudsToExport) XmlUtils.unMarshal(xmlFile, GroupeNoeudsToExport.class);
+ referentielToImportData.setGroupeNoeuds(groupeNoeudsToExport.getGroupeNoeuds());
+ }
+
+ private void readExtensionFichiers(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ExtensionFichiersToExport extensionFichiersToExport = (ExtensionFichiersToExport) XmlUtils.unMarshal(xmlFile, ExtensionFichiersToExport.class);
+ referentielToImportData.setExtensionFichiers(extensionFichiersToExport.getExtensionFichiers());
+ }
+
+ private void readApplicationSources(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ ApplicationSourcesToExport applicationSourcesToExport = (ApplicationSourcesToExport) XmlUtils.unMarshal(xmlFile, ApplicationSourcesToExport.class);
+ referentielToImportData.setApplicationSources(applicationSourcesToExport.getApplicationSourceList());
+ }
+
+ private void readNatureProductionFichiers(File xmlFile, ReferentielToImportData referentielToImportData) throws Exception {
+ NatureProductionFichiersToExport natureProductionFichiersToExport = (NatureProductionFichiersToExport) XmlUtils.unMarshal(xmlFile, NatureProductionFichiersToExport.class);
+ referentielToImportData.setNatureProductionFichiers(natureProductionFichiersToExport.getNatureProductionFichierList());
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java
new file mode 100644
index 0000000..a0affee
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionCheckerImpl.java
@@ -0,0 +1,131 @@
+/*
+ * 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.fdxcommons.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionChecker;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProduction;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableDefinitionCheckerImpl implements TableDefinitionChecker {
+
+ @Override
+ public boolean isSame(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef, List<NatureProductionFichier> natureProductionFichiers) {
+ if (!previousRefTableDef.getCodeTypeFichier().equals(nextRefTableDef.getCodeTypeFichier())) {
+ throw new IllegalArgumentException();
+ }
+ return isSameNatureProductionFichier(previousRefTableDef.getReferentielVersion(), nextRefTableDef.getReferentielVersion(), natureProductionFichiers)
+ && isSame(previousRefTableDef, nextRefTableDef)
+ && isSame(nextRefTableDef.getColumnDefinitions(), previousRefTableDef.getColumnDefinitions());
+ }
+
+ private boolean isSameNatureProductionFichier(String refVersion, String previousRef, List<NatureProductionFichier> natureProductionFichiers) {
+ Optional<NatureProductionFichier> natureProdFichOpt = natureProductionFichiers.stream().filter(p -> p.getReferentiel().getVersion().equals(refVersion)).findFirst();
+ Optional<NatureProductionFichier> previousNatureProdFichOpt = natureProductionFichiers.stream().filter(p -> p.getReferentiel().getVersion().equals(previousRef)).findFirst();
+
+ if (natureProdFichOpt.isPresent() && previousNatureProdFichOpt.isPresent()) {
+ return natureProdFichOpt.get().getNatureProduction().equals(previousNatureProdFichOpt.get().getNatureProduction());
+ } else if (!natureProdFichOpt.isPresent() && !previousNatureProdFichOpt.isPresent()) {
+ return true;
+ } else {
+ if (natureProdFichOpt.isPresent()) {
+ return natureProdFichOpt.get().getNatureProduction().equals(NatureProduction.REFERENTIELLE);
+ } else {
+ return previousNatureProdFichOpt.get().getNatureProduction().equals(NatureProduction.REFERENTIELLE);
+ }
+ }
+ }
+
+ private boolean isSame(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ return isSameColumnDelimiter(previousRefTableDef, nextRefTableDef)
+ && isSameLineDelimiter(previousRefTableDef, nextRefTableDef)
+ && isSameHeaderPresent(previousRefTableDef, nextRefTableDef);
+ }
+
+ private boolean isSameColumnDelimiter(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getColumnDelimiter() != null && nextRefTableDef.getColumnDelimiter() != null) {
+ return previousRefTableDef.getColumnDelimiter().equals(nextRefTableDef.getColumnDelimiter());
+ } else {
+ return previousRefTableDef.getColumnDelimiter() == null && nextRefTableDef.getColumnDelimiter() == null;
+ }
+ }
+
+ private boolean isSameLineDelimiter(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getLineDelimiter() != null && nextRefTableDef.getLineDelimiter() != null) {
+ return previousRefTableDef.getLineDelimiter().equals(nextRefTableDef.getLineDelimiter());
+ } else {
+ return previousRefTableDef.getLineDelimiter() == null && nextRefTableDef.getLineDelimiter() == null;
+ }
+ }
+
+ private boolean isSameHeaderPresent(TableDefinition previousRefTableDef, TableDefinition nextRefTableDef) {
+ if (previousRefTableDef.getHeaderPresent() != null && nextRefTableDef.getHeaderPresent() != null) {
+ return previousRefTableDef.getHeaderPresent().equals(nextRefTableDef.getHeaderPresent());
+ } else {
+ return previousRefTableDef.getHeaderPresent() == null && nextRefTableDef.getHeaderPresent() == null;
+ }
+ }
+
+ private boolean isSame(List<ColumnDefinition> newRefColumnDef, List<ColumnDefinition> oldRefColumnDef) {
+ boolean isSame = true;
+
+ if (newRefColumnDef.size() != oldRefColumnDef.size()) {
+ return false;
+ }
+ Map<String, ColumnDefinition> currentRefColDefToMap = newRefColumnDef.stream().collect(Collectors.toMap(ColumnDefinition::getName, Function.identity()));
+
+ for (ColumnDefinition c : oldRefColumnDef) {
+ ColumnDefinition oldColDef = currentRefColDefToMap.get(c.getName());
+
+ if (oldColDef == null) {
+ isSame = false;
+ break;
+ }
+
+ isSame = isSameFormatDate(c, oldColDef)
+ && isSamePosition(c, oldColDef)
+ && isSameTypeDonnee(c, oldColDef)
+ && isSameTaille(c, oldColDef)
+ && isSameTaillePartieDecimale(c, oldColDef);
+
+ if (!isSame) {
+ break;
+ }
+ }
+ return isSame;
+ }
+
+ private boolean isSameFormatDate(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return (newColDef.getFormatDate() == null ? oldColDef.getFormatDate() == null : newColDef.getFormatDate().trim().equalsIgnoreCase(oldColDef.getFormatDate()));
+ }
+
+ private boolean isSamePosition(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getPosition() == oldColDef.getPosition();
+ }
+
+ private boolean isSameTypeDonnee(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return (newColDef.getTypeDonnee() == null ? oldColDef.getTypeDonnee() == null : newColDef.getTypeDonnee().trim().equalsIgnoreCase(oldColDef.getTypeDonnee()));
+ }
+
+ private boolean isSameTaille(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getTaille() == oldColDef.getTaille();
+ }
+
+ private boolean isSameTaillePartieDecimale(ColumnDefinition newColDef, ColumnDefinition oldColDef) {
+ return newColDef.getTaillePartieDecimale() == oldColDef.getTaillePartieDecimale();
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionFilterImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionFilterImpl.java
new file mode 100644
index 0000000..221153c
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/TableDefinitionFilterImpl.java
@@ -0,0 +1,107 @@
+package com.megatim.fdxcommons.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionChecker;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionFilter;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import com.megatim.fdxcommons.model.referentiel.historique.pojo.TableDefinitionFiltered;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableDefinitionFilterImpl implements TableDefinitionFilter {
+
+ @Inject
+ private TableDefinitionChecker tableDefinitionChecker;
+
+ @Override
+ public TableDefinitionFiltered doFilter(String previousRef, ReferentielToImportData referentielToImportData, List<ReferentielIntegrationHistorique> refsHistoriqueIntegration) {
+ final int refEncours = Integer.parseInt(referentielToImportData.getReferentielEnCours().getVersion());
+ int indexDebut = previousRef == null ? 1 : Integer.parseInt(previousRef) + 1;
+
+ while (indexDebut <= refEncours) {
+ compareTableDefinition(indexDebut, referentielToImportData, refsHistoriqueIntegration);
+ indexDebut++;
+ }
+
+ return new TableDefinitionFiltered(tablesToCreate(referentielToImportData, refsHistoriqueIntegration), refsHistoriqueIntegration);
+ }
+
+ private List<TableDefinition> tablesToCreate(ReferentielToImportData referentielToImportData, List<ReferentielIntegrationHistorique> refsHistoriqueIntegration) {
+ List<TableDefinition> tablesToCreate = new ArrayList<>();
+
+ refsHistoriqueIntegration.stream().forEach(h -> {
+ referentielToImportData
+ .getTableDefinitions()
+ .stream()
+ .filter(p -> h.getCodeTypeFichier().equals(p.getCodeTypeFichier()) && h.getReferentielVersion().equals(p.getReferentielVersion()))
+ .findFirst()
+ .ifPresent(c -> tablesToCreate.add(c));
+ });
+
+ return tablesToCreate;
+ }
+
+ private void compareTableDefinition(int index, ReferentielToImportData referentielToImportData, List<ReferentielIntegrationHistorique> refsHistoriqueIntegration) {
+ String refVersion = referentielVersion(index);
+ String previousRef = referentielVersion(index - 1);
+
+ List<TableDefinition> newTableDef = referentielToImportData.getTableDefinitions().stream().filter(p -> p.getReferentielVersion().equals(refVersion)).collect(Collectors.toList());
+
+ newTableDef.stream().forEach(nt -> {
+ Optional<ReferentielIntegrationHistorique> optRefHist
+ = refsHistoriqueIntegration
+ .stream()
+ .filter(r -> r.getCodeTypeFichier().equals(nt.getCodeTypeFichier()) && r.getDependingReferentiels().contains(previousRef))
+ .findFirst();
+
+ if (optRefHist.isPresent()) {
+ Optional<TableDefinition> oldTableDef
+ = referentielToImportData.getTableDefinitions()
+ .stream()
+ .filter(p -> p.getReferentielVersion().equals(optRefHist.get().getReferentielVersion()) && p.getCodeTypeFichier().equals(nt.getCodeTypeFichier()))
+ .findFirst();
+
+ if (oldTableDef.isPresent() && tableDefinitionChecker.isSame(nt, oldTableDef.get(), referentielToImportData.getNatureProductionFichiers())) {
+ ReferentielIntegrationHistorique refHist = optRefHist.get();
+ refHist.getDependingReferentiels().add(refVersion);
+ } else {
+ addNewReferentielIntegrationHistorique(nt.getCodeTypeFichier(), refVersion, refsHistoriqueIntegration);
+ }
+ } else {
+ addNewReferentielIntegrationHistorique(nt.getCodeTypeFichier(), refVersion, refsHistoriqueIntegration);
+ }
+ });
+
+ }
+
+ private void addNewReferentielIntegrationHistorique(String codeTypeFichier, String refVersion, List<ReferentielIntegrationHistorique> refsHistoriqueIntegration) {
+ refsHistoriqueIntegration.add(new ReferentielIntegrationHistorique(codeTypeFichier,
+ refVersion,
+ new HashSet<>(Arrays.asList(refVersion))));
+ }
+
+ private String referentielVersion(int ref) {
+ return generateZeros(6 - (ref + "").length()) + ref;
+ }
+
+ private String generateZeros(int nbOfZero) {
+ StringBuilder str = new StringBuilder();
+ for (int i = 0; i < nbOfZero; i++) {
+ str.append("0");
+ }
+ return str.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ValidateurTypeFichierParserImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ValidateurTypeFichierParserImpl.java
new file mode 100644
index 0000000..8e5492c
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/helper/referentiel/ValidateurTypeFichierParserImpl.java
@@ -0,0 +1,335 @@
+package com.megatim.fdxcommons.core.impl.helper.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.Constantes;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.ValidateurTypeFichierParser;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.integration.enums.FileExtension;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import java.io.File;
+import java.text.Normalizer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.Dependent;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ValidateurTypeFichierParserImpl implements ValidateurTypeFichierParser {
+
+ @Override
+ public TableDefinition parseToColumnDefinition(String validatorPath, String codeTypeFichier, String referentielVersion) throws Exception {
+ File file = new File(validatorPath);
+ return retrieveFieldsFromValidator(file, codeTypeFichier, referentielVersion);
+ }
+
+ /**
+ * Méthode permettant d'extraire les éléments du validateur XML
+ *
+ * @param file : Fichier du validateur
+ * @return
+ * @throws Exception
+ */
+ private TableDefinition retrieveFieldsFromValidator(File file, String codeTypeFichier, String referentielVersion) throws Exception {
+ Document doc = intialize(file);
+ NodeList entityList = doc.getElementsByTagName("entity"); //Liste des noeud <entity>
+
+ //Map qui stocke le champ à une position, ainsi que les caractéristiques de champ(typeDonnee, taille, index de debut d'extraction)
+ Map<Integer, Map<String, String>> mapParams = new HashMap<>();
+ int position = 1;
+ TableDefinition tableDefinition = new TableDefinition();
+
+ //Le validateur XML doit avoir au moins deux balises <entity> pour être conforme
+ if (entityList.getLength() >= 2) {
+
+ //Liste des noeud de type <validation> du deuxième Noeud <entity>
+ final Node entityNode = entityList.item(1);
+ NodeList entityFileLineChildren = entityNode.getChildNodes();
+ tableDefinition = tableDefinition(entityNode);
+
+ //Map qui contient champ set son nombe d'occurrence dans le fichier en coures de traitement
+ Map<String, Integer> mapFieldName = new HashMap<>();
+
+ //parcours de la balise <entity> pour récupérer ses enfants
+ for (int i = 0; i < entityFileLineChildren.getLength(); i++) {
+
+ if (entityFileLineChildren.item(i) != null && entityFileLineChildren.item(i).getAttributes() != null) {
+
+ //balise <validation>
+ Node validation = entityFileLineChildren.item(i);
+
+ if (validation != null) {
+ Map<String, String> mapAttributes = new HashMap<>();
+
+ //Liste des assertions de la balise <validation>
+ NodeList assertions = validation.getChildNodes();
+
+ for (int r = 0; r < assertions.getLength(); r++) {
+
+ Node assertion = assertions.item(r);
+
+ if (assertion != null && assertion.getAttributes() != null) {
+ NamedNodeMap assertionAttributes = assertion.getAttributes();
+
+ for (int q = 0; q < assertionAttributes.getLength(); q++) {
+ String assertionAttributeName = assertionAttributes.item(q).getNodeName();
+ String assertionAttributeValue = assertionAttributes.item(q).getNodeValue();
+
+ if (assertionAttributeName.equalsIgnoreCase(Constantes.ERROR_CODE)) {
+ String fieldName = constructFieldName(assertionAttributeValue, codeTypeFichier);
+
+ //Stocker le nbre d'occurrences trouvés dans la map
+ if (mapFieldName.containsKey(fieldName)) {
+ Integer nbOccurrences = mapFieldName.get(fieldName);
+ mapFieldName.replace(fieldName, nbOccurrences + 1);
+
+ } else {
+ mapFieldName.put(fieldName, 1);
+ }
+ Integer nbOccurrences = mapFieldName.get(fieldName);
+ String finalFieldName = nbOccurrences == 1 ? fieldName : fieldName + (nbOccurrences - 1);
+
+ mapAttributes.put(Constantes.FIELD_NAME, finalFieldName);
+ break;
+ }
+ }
+
+ //Liste des balises <param-value> de la balise <assertion>
+ NodeList params = assertion.getChildNodes();
+ Integer positionAttribute = null;
+
+ for (int j = 0; j < params.getLength(); j++) {
+
+ if (params.item(j) != null && params.item(j).getAttributes() != null) {
+
+ //Les attributs de la balise <param-value>
+ NamedNodeMap attributesParamValue = params.item(j).getAttributes();
+
+ if (attributesParamValue.getLength() == 2) {
+
+ String nodeValue = attributesParamValue.item(0).getNodeValue();
+ String nextNodeValue = attributesParamValue.item(1).getNodeValue();
+
+ if (!nodeValue.equalsIgnoreCase(Constantes.EQUAL_PARAM)
+ && !nextNodeValue.equalsIgnoreCase(Constantes.EQUAL_PARAM)
+ && !nodeValue.equalsIgnoreCase(Constantes.LIGNE)
+ && !nextNodeValue.equalsIgnoreCase(Constantes.LIGNE)
+ && !nodeValue.equalsIgnoreCase(Constantes.EQUAL_VALUE)
+ && !nextNodeValue.equalsIgnoreCase(Constantes.EQUAL_VALUE)) {
+ mapAttributes.put(nodeValue, nextNodeValue);
+
+ if (nodeValue.equalsIgnoreCase(Constantes.POSITION)) {
+ positionAttribute = Integer.valueOf(nextNodeValue);
+ }
+ }
+ }
+ if (mapAttributes.size() > 2) {//On ne garde pas les informatios sur la taille de la ligne
+ mapParams.put(positionAttribute != null ? positionAttribute : position, mapAttributes);
+ }
+ }
+ }
+ }
+ }
+ }
+ position++;
+ }
+ }
+ }
+ tableDefinition.setColumnDefinitions(getColumnsDefinition(mapParams, codeTypeFichier, referentielVersion));
+ tableDefinition.setCodeTypeFichier(codeTypeFichier);
+ tableDefinition.setReferentielVersion(referentielVersion);
+
+ return tableDefinition;
+
+ }
+
+ private TableDefinition tableDefinition(Node entityNode) {
+ TableDefinition tableDefinition = new TableDefinition();
+ NamedNodeMap attributes = entityNode.getAttributes();
+
+ for (int i = 0; i < attributes.getLength(); i++) {
+ String assertionAttributeName = attributes.item(i).getNodeName();
+ String assertionAttributeValue = attributes.item(i).getNodeValue();
+
+ if (assertionAttributeName.equalsIgnoreCase(Constantes.COLUMN_DELIMITER)) {
+ tableDefinition.setColumnDelimiter(assertionAttributeValue);
+ } else if (assertionAttributeName.equalsIgnoreCase(Constantes.LINE_DELIMITER)) {
+ tableDefinition.setLineDelimiter(assertionAttributeValue);
+ } else if (assertionAttributeName.equalsIgnoreCase(Constantes.HEADER_PRESENT)) {
+ tableDefinition.setHeaderPresent(Boolean.valueOf(assertionAttributeValue));
+ } else if (assertionAttributeName.equalsIgnoreCase(Constantes.EXTENSION)) {
+ tableDefinition.setExtension(FileExtension.fromValeur(assertionAttributeValue));
+ }
+ }
+ return tableDefinition;
+ }
+
+ /**
+ * Méthode utilitaire pour extraire les données dans un fichier xml
+ *
+ * @param array
+ * @return
+ * @throws Exception
+ */
+ private Document intialize(File file) throws Exception {
+
+ /**
+ * Défini un factory qui aide à obtenir un parseur qui produit un arbre
+ * d'objets DOM à partir d'un document XML.
+ */
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ /**
+ * création d'un objet du builder pour parser le fichier XML.
+ */
+ DocumentBuilder db = dbf.newDocumentBuilder();
+
+ Document doc = db.parse(file);
+
+ doc.getDocumentElement().normalize();
+
+ return doc;
+ }
+
+ /**
+ * Méthode qui met les informations du validateur dans un ColumnDefinition
+ * pour utilisation future
+ *
+ * @param mapStructure
+ * @return
+ */
+ private List<ColumnDefinition> getColumnsDefinition(Map<Integer, Map<String, String>> mapStructure, String codeTypeFichier, String referentielVersion) throws CommonApplicationValidationException {
+ List<ColumnDefinition> columns = new ArrayList<>();
+
+ for (Integer key : mapStructure.keySet()) {
+ ColumnDefinition column = new ColumnDefinition();
+ Map<String, String> value = mapStructure.get(key);
+ final String typeDonnee = value.get(Constantes.TYPE_DONNEE);
+
+ if (typeDonnee != null) {
+ column.setPosition(key);
+
+ if (value.get(Constantes.TAILLE) != null) {
+ column.setTaille(Integer.parseInt(value.get(Constantes.TAILLE)));
+ } else {//Valeur par défaut
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.toString())) {
+ column.setTaille(255);
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.toString())) {
+ column.setTaille(17);
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DECIMAL.toString())) {
+ column.setTaille(17);
+ column.setTaillePartieDecimale(3);
+ }
+ }
+ column.setPosition(key);
+ column.setName(value.get(Constantes.FIELD_NAME).trim().toLowerCase());
+ column.setTypeDonnee(TypeDonnee.fromValeur(typeDonnee).getValue().trim());
+ column.setCodeTypeFichier(codeTypeFichier.trim());
+ column.setReferentielVersion(referentielVersion.trim());
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.DECIMAL.toString()) && value.get(Constantes.TAILLE) != null) {
+
+ if (value.get(Constantes.TAILLE_PARTIE_DECIMALE) != null) {
+ column.setTaillePartieDecimale(Integer.parseInt(value.get(Constantes.TAILLE_PARTIE_DECIMALE)));
+ }
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.toString())) {
+ String separateurDate = value.get(Constantes.SEPARATEUR_DATE);
+ String formatDate = value.get(Constantes.FORMAT_DATE);
+
+ if (formatDate != null && !formatDate.isEmpty()) {
+
+ if (separateurDate != null && !separateurDate.isEmpty()) {
+
+ if (separateurDate.equals("-") || separateurDate.equals("/")) {
+ formatDate = addSeparateurToDateFormat(formatDate, separateurDate, column.getName());
+
+ } else {
+ throw new CommonApplicationValidationException("Le séparateur de date du champ " + column.getName() + " ne peut être " + separateurDate);
+ }
+ }
+ column.setFormatDate(formatDate);
+ } else {
+ throw new CommonApplicationValidationException("Le format date du champ " + column.getName() + " est absent");
+ }
+ }
+
+ columns.add(column);
+ }
+ }
+
+ return columns;
+ }
+
+ /**
+ * Méthode qui ajoute le séparateur renseigné dans le validateur au format
+ *
+ * @param formatDate
+ * @param separateurDate
+ * @param columnName
+ * @return
+ */
+ private String addSeparateurToDateFormat(String formatDate, String separateurDate, String columnName) {
+ StringBuilder dateValue = new StringBuilder();
+
+ switch (formatDate) {
+ case "ddMMyyyy":
+ dateValue.append("dd").append(separateurDate).append("MM").append(separateurDate).append("yyyy");
+ break;
+ case "ddyyyyMM":
+ dateValue.append("dd").append(separateurDate).append("yyyy").append(separateurDate).append("MM");
+ break;
+ case "MMddyyyy":
+ dateValue.append("MM").append(separateurDate).append("dd").append(separateurDate).append("yyyy");
+ break;
+ case "MMyyyydd":
+ dateValue.append("MM").append(separateurDate).append("yyyy").append(separateurDate).append("dd");
+ break;
+ case "yyyyddMM":
+ dateValue.append("yyyy").append(separateurDate).append("dd").append(separateurDate).append("MM");
+ break;
+ case "yyyyMMdd":
+ dateValue.append("yyyy").append(separateurDate).append("MM").append(separateurDate).append("dd");
+ break;
+ case "yyyy":
+ dateValue.append("yyyy");
+ break;
+ case "yyyyMM":
+ dateValue.append("yyyy").append(separateurDate).append("MM");
+ case "MMyyyy":
+ dateValue.append("MM").append(separateurDate).append("yyyy");
+ break;
+ default:
+ throw new CommonApplicationValidationException("Le format date " + formatDate + " du champ" + columnName + " n'est pas acceptable ");
+ }
+
+ return dateValue.toString();
+ }
+
+ private String constructFieldName(String fieldName, String codeTypeFichier) {
+
+ fieldName = fieldName.startsWith(codeTypeFichier)
+ ? fieldName.substring(6)
+ : fieldName;
+ fieldName = fieldName.equalsIgnoreCase("int") ? "_" + fieldName : fieldName;
+ return removeAccents(fieldName.replaceAll(" ", "_"));
+ }
+
+ private String removeAccents(String input) {
+ // Normalize to decomposed form (NFD): é → e + ´, è → e + `
+ String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
+ // Remove all diacritical marks (accents)
+ return normalized.replaceAll("\\p{M}", "");
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/AfterUserActionImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/AfterUserActionImpl.java
new file mode 100644
index 0000000..de57034
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/AfterUserActionImpl.java
@@ -0,0 +1,77 @@
+/*
+ * 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.fdxcommons.core.impl.interceptor;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.AfterUserAction;
+import com.megatim.fdxcommons.core.ifaces.interceptor.InterceptorHandler;
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.log.ContainerContextDto;
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import java.lang.reflect.Method;
+import java.time.LocalDateTime;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import ua_parser.Client;
+import ua_parser.Parser;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class AfterUserActionImpl implements AfterUserAction {
+
+ @Inject
+ private InterceptorHandler handler;
+
+ @Override
+ public UserActionLog filter(ContainerContextDto containerContext) throws Exception {
+ Method method = containerContext.getResourceInfo().getResourceMethod();
+
+ if (method != null && method.getAnnotation(LoggingInterceptorBinding.class) != null) {
+ return logMethodInvocation(method, containerContext);
+ } else {
+ return null;
+ }
+ }
+
+ private UserActionLog logMethodInvocation(Method method, ContainerContextDto containerContext) throws Exception {
+ Object responseEntity = containerContext.getContainerResponseContext().getEntity();
+ Object requestEntity = containerContext.getContainerRequestContext().getProperty("entity");
+ final int status = containerContext.getContainerResponseContext().getStatus();
+
+ UserActionLog log = new UserActionLog();
+ log.setDateAction(LocalDateTime.now());
+ log.setUserName(containerContext.getSecurityContext().getUserPrincipal() != null
+ ? containerContext.getSecurityContext().getUserPrincipal().getName()
+ : null);
+ log.setStatus(status);
+ log.setMotif(log.getStatus() != null ? log.getStatus().toString() + " (" + AppContext.registre_codes_http.get(log.getStatus().toString()) + ")" : null);
+ log.setIpAddress(containerContext.getHttpServletRequest().getRemoteAddr());
+ log.setHttpMethod(containerContext.getContainerRequestContext().getMethod());
+ log.setRelativePath(containerContext.getUriInfo().getPath());
+ Parser uaParser = new Parser();
+ Client c = uaParser.parse(containerContext.getHttpServletRequest().getHeader("User-Agent"));
+ log.setUserAgent(c.userAgent.family);
+
+ if (status < 400) {
+ log.setMessage(message(method, requestEntity, responseEntity, containerContext));
+ } else {
+ log.setMessage("Erreur " + status);
+ }
+ return log;
+ }
+
+ private String message(Method method, Object requestEntity, Object responseEntity, ContainerContextDto containerContext) throws Exception {
+ LoggingInterceptorBinding ann = method.getAnnotation(LoggingInterceptorBinding.class);
+ return handler.finalMessage(ann,
+ method.getParameters(),
+ containerContext.getContainerRequestContext().getUriInfo().getPathParameters(),
+ requestEntity,
+ responseEntity);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/BeforeActionImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/BeforeActionImpl.java
new file mode 100644
index 0000000..c016352
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/BeforeActionImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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.fdxcommons.core.impl.interceptor;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.BeforeAction;
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Method;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ResourceInfo;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class BeforeActionImpl implements BeforeAction {
+
+ @Override
+ public void filter(ContainerRequestContext crc, ResourceInfo resourceInfo) {
+ Method method = resourceInfo.getResourceMethod();
+ LoggingInterceptorBinding ann = method.getAnnotation(LoggingInterceptorBinding.class);
+
+ if (crc.hasEntity() && ann != null && ann.shouldCopyData()) {
+ InputStream inputStream = crc.getEntityStream();
+ String body = new BufferedReader(new InputStreamReader(inputStream))
+ .lines().collect(Collectors.joining("\n"));
+
+ crc.setProperty("entity", body);
+
+ // Replace the original input stream with a new one after reading it
+ crc.setEntityStream(new ByteArrayInputStream(body.getBytes()));
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/InterceptorHandlerImpl.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/InterceptorHandlerImpl.java
new file mode 100644
index 0000000..93902e7
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/interceptor/InterceptorHandlerImpl.java
@@ -0,0 +1,158 @@
+/*
+ * 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.fdxcommons.core.impl.interceptor;
+
+import com.google.gson.Gson;
+import com.google.gson.internal.LinkedTreeMap;
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.core.ifaces.interceptor.InterceptorHandler;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.ws.rs.core.MultivaluedMap;
+
+/**
+ * {} : Les paramètres de requête sont entre accolades () : La valeur de retour
+ * entre les parenthèses [] : L'entité de requête est entre les crochets
+ *
+ * @author ASUS
+ */
+@Dependent
+public class InterceptorHandlerImpl implements InterceptorHandler {
+
+ @Override
+ public String finalMessage(LoggingInterceptorBinding interceptorBinding, Parameter[] parameters, MultivaluedMap<String, String> queryParams, Object requestEntity, Object responseEntity) throws Exception {
+ //Recherche des références au paramètres de la requête
+ String message = infoFromPathParameters(interceptorBinding.message(), queryParams);
+
+ //Recherche des références aux éléments du tableau de paramètres
+ message = infoFromParameters(message, parameters, requestEntity);
+
+ //Recherche des références à la valeur de retour
+ return infoFromReturnValue(message, interceptorBinding.classe(), responseEntity);
+ }
+
+ private String infoFromPathParameters(String message, MultivaluedMap<String, String> queryParams) throws Exception {
+ if (!queryParams.isEmpty()) {
+ Pattern pattern = Pattern.compile("\\{\\S{1,}\\}");
+ Matcher matcher = pattern.matcher(message);
+
+ while (matcher.find()) {
+ String group = matcher.group();
+ String fieldName = group.substring(1, group.length() - 1);
+
+ if (queryParams.containsKey(fieldName)) {
+ message = message.replace(group, queryParams.getFirst(fieldName));
+ }
+ }
+ }
+ return message;
+ }
+
+ private String infoFromReturnValue(String message, Class<?> classe, Object dataToProcess) throws Exception {
+ Pattern pattern = Pattern.compile("\\(\\S{1,}\\)");
+ Matcher matcher = pattern.matcher(message);
+
+ while (matcher.find()) {
+ String group = matcher.group();
+ String fieldName = group.substring(1, group.length() - 1);
+ String[] fieldPath = fieldName.split("\\.");
+ String fieldValue = value(fieldPath, classe, dataToProcess);
+ message = message.replace(group, fieldValue);
+ }
+
+ return message;
+ }
+
+ private String infoFromParameters(String message, Parameter[] parameters, Object requestEntity) throws Exception {
+ if (parameters.length > 0) {
+ Pattern pattern = Pattern.compile("\\[\\d{1,}\\S*\\]");
+ Matcher matcher = pattern.matcher(message);
+
+ while (matcher.find()) {
+ String group = matcher.group();
+ String fieldName = group.substring(1, group.length() - 1);
+ String[] fieldPath = fieldName.split("\\.");
+ int index = Integer.parseInt(fieldPath[0]);
+
+ if (requestEntity != null && index < parameters.length) {
+ Object obj = new Gson().fromJson(requestEntity.toString(), parameters[index].getType());
+ String value = "";
+
+ if (fieldPath.length == 1) {
+ value = value(fieldPath, parameters[index].getType(), obj);
+ } else {
+ value = value(Arrays.copyOfRange(fieldPath, 1, fieldPath.length),
+ parameters[index].getType(), obj);
+ }
+
+ message = message.replace(group, value);
+ }
+ }
+ }
+ return message;
+ }
+
+ private String value(String[] fieldPath, Class<?> classe, Object dataToProcess) throws Exception {
+
+ if (dataToProcess instanceof Collection) {
+ return valueFromCollection(fieldPath, classe, (Collection) dataToProcess);
+
+ } else {
+ return valueFromField(fieldPath, classe, dataToProcess);
+ }
+ }
+
+ private String valueFromCollection(String[] fieldPath, Class<?> classe, Collection collection) throws Exception {
+ List<String> values = new ArrayList<>();
+ for (Object obj : collection) {
+ values.add(valueFromField(fieldPath, classe, obj));
+ }
+ return "[" + values.stream().collect(Collectors.joining(",")) + "]";
+ }
+
+ private String valueFromLinkedTreeMap(LinkedTreeMap dataToProcess, String field) {
+ return dataToProcess.get(field).toString();
+ }
+
+ private String valueFromField(String[] fieldPath, Class<?> classe, Object dataToProcess) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
+ if (dataToProcess instanceof LinkedTreeMap) {
+ return valueFromLinkedTreeMap((LinkedTreeMap) dataToProcess, fieldPath[0]);
+ } else {
+ String methodName = "get" + (fieldPath[0].charAt(0) + "").toUpperCase() + fieldPath[0].substring(1);
+ Method method = classe.getMethod(methodName);
+ Object obj = method.invoke(classe.cast(dataToProcess));
+
+ if (fieldPath.length == 1) {
+ return obj.toString();
+
+ } else {
+ Class<?> classToParse = fieldType(fieldPath[0], classe);
+ return valueFromField(Arrays.copyOfRange(fieldPath, 1, fieldPath.length), classToParse, obj);
+ }
+ }
+ }
+
+ private Class<?> fieldType(String fieldName, Class<?> classe) {
+ Optional<Field> optionalField = Arrays.asList(classe.getDeclaredFields()).stream().filter(f -> f.getName().equals(fieldName)).findFirst();
+
+ if (optionalField.isPresent()) {
+ return optionalField.get().getType();
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/CommonUtilities.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/CommonUtilities.java
new file mode 100644
index 0000000..e02a38c
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/CommonUtilities.java
@@ -0,0 +1,56 @@
+/*
+ * 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.fdxcommons.core.impl.tools;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CommonUtilities {
+
+ /**
+ * Méthode qui récupère l'encodage d'un fichier
+ *
+ * @param file : Fichier dont on veut connaître l'encodage
+ * @return : retourne l'encodage le plus probable
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public static Charset getCharset(File file) throws FileNotFoundException, IOException {
+ return StandardCharsets.UTF_8;
+ }
+
+ public static Map<String, ColumnDefinition> columnDefinitionsToMap(List<ColumnDefinition> columnDefinitions) {
+ Map<String, ColumnDefinition> columnDefinitionsMap = new HashMap<>();
+ columnDefinitions.stream().forEach(c -> columnDefinitionsMap.put(c.getName(), c));
+
+ return columnDefinitionsMap;
+ }
+
+ public static Class<?> fullQualifiedNameTypeFromTypeDonnee(TypeDonnee typeDonnee) {
+ switch (typeDonnee) {
+ case NUMERIQUE:
+ return java.lang.Long.class;
+ case DATE:
+ return java.time.LocalDateTime.class;
+ case DECIMAL:
+ return java.math.BigDecimal.class;
+ default:
+ return java.lang.String.class;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/XmlUtils.java b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/XmlUtils.java
new file mode 100644
index 0000000..b451926
--- /dev/null
+++ b/fdx-commons/fdxcommons-core-impl/src/main/java/com/megatim/fdxcommons/core/impl/tools/XmlUtils.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.core.impl.tools;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ *
+ * @author lenovo
+ */
+public class XmlUtils {
+
+ private XmlUtils() {
+ }
+
+ public static Object unMarshal(File xmlFile, Class<?> classe) throws JAXBException, FileNotFoundException, XMLStreamException {
+ XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
+ XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(xmlFile));
+
+ JAXBContext jaxbContext = JAXBContext.newInstance(classe);
+ Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
+ return jaxbUnmarshaller.unmarshal(xmlStreamReader);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/.gitignore b/fdx-commons/fdxcommons-dao-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-commons/fdxcommons-dao-ifaces/nb-configuration.xml b/fdx-commons/fdxcommons-dao-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-dao-ifaces/pom.xml b/fdx-commons/fdxcommons-dao-ifaces/pom.xml
new file mode 100644
index 0000000..b7cb18b
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/pom.xml
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.dao.ifaces</groupId>
+ <artifactId>fdxcommons-dao-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericDAOLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.3.0.Final</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxcommons-dao-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/AbstractCrudDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/AbstractCrudDAO.java
new file mode 100644
index 0000000..bf262d2
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/AbstractCrudDAO.java
@@ -0,0 +1,185 @@
+package com.megatim.fdxcommons.dao.ifaces.abstracts;
+
+import com.megatim.fdxcommons.dao.ifaces.utils.SearchCriteriaBuilderUtil;
+import com.megatim.fdxcommons.model.search.SearchCriteria;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AbstractCrudDAO<T, ID, U> {
+
+ public EntityManager getEntityManager();
+
+ public Class<T> getManagedEntityClass();
+
+ public T getById(ID id);
+
+ public default T save(T entity) {
+ return getEntityManager().merge(entity);
+ }
+
+ public default void delete(T entity) {
+ getEntityManager().remove(entity);
+ }
+
+ public default long count(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<Long> cq = qb.createQuery(Long.class);
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+ List<Predicate> predicates = createPedicates(searchCriterias, qb, root);
+
+ cq.select(qb.count(root));
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return (long) getEntityManager().createQuery(cq).getSingleResult();
+ }
+
+ public default List<T> getAll(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return getEntityManager().createQuery(cq).getResultList();
+ }
+
+ public default List<T> findWithPagination(Integer pageNumber, Integer pagesize, U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ TypedQuery<T> typedQuery = getEntityManager().createQuery(cq);
+
+ typedQuery.setFirstResult((pageNumber - 1) * pagesize);
+ typedQuery.setMaxResults(pagesize);
+
+ return typedQuery.getResultList();
+ }
+
+ /**
+ * Méthode qui les prédicats à partir des critères de recherche
+ *
+ * @param searchCriterias
+ * @param cb
+ * @param root
+ * @return
+ */
+ public default List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+ List<Predicate> predicates = new ArrayList<>();
+
+ searchCriterias.parallelStream().forEach(s -> {
+
+ if (s.getFieldValue() != null) {
+ Predicate predicate = null;
+ switch (s.getOperateur()) {
+ case EQUALS:
+ predicate = cb.equal(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case NOT_EQUALS:
+ predicate = cb.notEqual(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case LIKE:
+ if (s.getFieldValue() instanceof String) {
+ predicate = cb.like(s.getFrom().get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.gt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.lt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.le(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThanOrEqualTo(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ case IN:
+ if (s.getFieldValue() instanceof java.util.Collection) {
+ predicate = s.getFrom().get(s.getFieldName()).in(s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ default:
+
+ }
+ }
+ });
+
+ return predicates;
+ }
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/CustomDAOIfaces.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/CustomDAOIfaces.java
new file mode 100644
index 0000000..b1a7d10
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/abstracts/CustomDAOIfaces.java
@@ -0,0 +1,197 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.dao.ifaces.abstracts;
+
+import com.megatim.fdxcommons.dao.ifaces.utils.SearchCriteriaBuilderUtil;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.LESS_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.LESS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur.NOT_EQUALS;
+import com.megatim.fdxcommons.model.search.SearchCriteria;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CustomDAOIfaces<T, ID, U> {
+
+ default T save(T entity) {
+ return getEntityManager().merge(entity);
+ }
+
+ default void delete(T entity) {
+ getEntityManager().remove(entity);
+ }
+
+ public Class<T> getManagedEntityClass();
+
+ public EntityManager getEntityManager();
+
+ public T getById(ID id);
+
+ public default long count(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<Long> cq = qb.createQuery(Long.class);
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+ List<Predicate> predicates = createPedicates(searchCriterias, qb, root);
+
+ cq.select(qb.count(root));
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return (long) getEntityManager().createQuery(cq).getSingleResult();
+ }
+
+ public default List<T> getAll(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return getEntityManager().createQuery(cq).getResultList();
+ }
+
+ public default List<T> findWithPagination(Integer pageNumber, Integer pagesize, U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ TypedQuery<T> typedQuery = getEntityManager().createQuery(cq);
+
+ typedQuery.setFirstResult((pageNumber - 1) * pagesize);
+ typedQuery.setMaxResults(pagesize);
+
+ return typedQuery.getResultList();
+ }
+
+ /**
+ * Méthode qui les prédicats à partir des critères de recherche
+ *
+ * @param searchCriterias
+ * @param cb
+ * @param root
+ * @return
+ */
+ public default List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+ List<Predicate> predicates = new ArrayList<>();
+
+ searchCriterias.stream().forEach(s -> {
+
+ if (s.getFieldValue() != null) {
+ Predicate predicate = null;
+ switch (s.getOperateur()) {
+ case EQUALS:
+ predicate = cb.equal(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case NOT_EQUALS:
+ predicate = cb.notEqual(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case LIKE:
+ if (s.getFieldValue() instanceof String) {
+ predicate = cb.like(s.getFrom().get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.gt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.lt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.le(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThanOrEqualTo(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ case IN:
+ if (s.getFieldValue() instanceof java.util.Collection) {
+ predicate = s.getFrom().get(s.getFieldName()).in(s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ default:
+
+ }
+ }
+ });
+
+ return predicates;
+ }
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/ColumnDefinitionDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/ColumnDefinitionDAO.java
new file mode 100644
index 0000000..73dccdc
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/ColumnDefinitionDAO.java
@@ -0,0 +1,84 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.dao.ifaces.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.ColumnDefinitionId;
+import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+import javax.persistence.Query;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ColumnDefinitionDAO extends CustomDAOIfaces<ColumnDefinition, ColumnDefinitionId, ColumnDefinitionSearch> {
+
+ public default ColumnDefinition findByNameAndReferentielAndTypeFichier(String columnName, String referentielVersion, String codeTypeFichier) {
+ Query query = getEntityManager().createQuery("SELECT c FROM ColumnDefinition c "
+ + " WHERE c.name = :columnName AND c.referentielVersion = :referentielVersion "
+ + " AND c.codeTypeFichier = :codeTypeFichier");
+
+ query.setParameter("columnName", columnName);
+ query.setParameter("referentielVersion", referentielVersion);
+ query.setParameter("codeTypeFichier", codeTypeFichier);
+
+ Optional<ColumnDefinition> optColumnDef = ((List<ColumnDefinition>) query.getResultList()).stream().findFirst();
+
+ return optColumnDef.isPresent() ? optColumnDef.get() : null;
+ }
+
+ public default List<ColumnDefinition> findByReferentielAndTypeFichier(String referentielVersion, String codeTypeFichier) {
+ return getEntityManager()
+ .createQuery("SELECT c FROM ColumnDefinition c"
+ + " WHERE c.referentielVersion = :referentielVersion AND c.codeTypeFichier = :codeTypeFichier", ColumnDefinition.class)
+ .setParameter("referentielVersion", referentielVersion)
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .getResultList();
+
+ }
+
+ public default List<ColumnDefinition> findByReferentiel(String referentielVersion) {
+ return getEntityManager()
+ .createQuery("SELECT c FROM ColumnDefinition c"
+ + " WHERE c.referentielVersion = :referentielVersion ", ColumnDefinition.class)
+ .setParameter("referentielVersion", referentielVersion)
+ .getResultList();
+ }
+
+ public default Set<String> findTypeFichierByReferentiel(String referentielVersion) {
+ Set<String> typeFichiers = new HashSet<>();
+ List<ColumnDefinition> columnDefinitions = findByReferentiel(referentielVersion);
+
+ columnDefinitions.stream().forEach(c -> {
+ if (!typeFichiers.contains(c.getCodeTypeFichier())) {
+ typeFichiers.add(c.getCodeTypeFichier());
+ }
+ });
+ return typeFichiers;
+ }
+
+ @Override
+ public default ColumnDefinition getById(ColumnDefinitionId id) {
+ Query query = getEntityManager().createQuery("SELECT c FROM ColumnDefinition c"
+ + " WHERE c.referentielVersion = :referentielVersion AND c.codeTypeFichier = :codeTypeFichier"
+ + " AND c.name = :name");
+
+ query.setParameter("referentielVersion", id.getReferentielVersion());
+ query.setParameter("codeTypeFichier", id.getCodeTypeFichier());
+ query.setParameter("name", id.getName());
+
+ Optional<ColumnDefinition> optColumnDef = ((List<ColumnDefinition>) query.getResultList()).stream().findFirst();
+
+ return optColumnDef.isPresent() ? optColumnDef.get() : null;
+ }
+
+ List<Tuple> byRefVersionAndByTypeFichier();
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/TableDefinitionDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/TableDefinitionDAO.java
new file mode 100644
index 0000000..36b00d5
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/TableDefinitionDAO.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.dao.ifaces.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.integration.TableDefinitionId;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.searchentities.TableDefinitionSearch;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableDefinitionDAO extends CustomDAOIfaces<TableDefinition, TableDefinitionId, TableDefinitionSearch> {
+
+ @Override
+ public default TableDefinition getById(TableDefinitionId id) {
+ Query query = getEntityManager().createQuery("SELECT t FROM TableDefinition t "
+ + " WHERE t.referentielVersion = :referentielVersion AND t.codeTypeFichier = :codeTypeFichier");
+
+ query.setParameter("referentielVersion", id.getReferentielVersion());
+ query.setParameter("codeTypeFichier", id.getCodeTypeFichier());
+
+ Optional<TableDefinition> optTableDef = ((List<TableDefinition>) query.getResultList()).stream().findFirst();
+
+ return optTableDef.isPresent() ? optTableDef.get() : null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/JsonStructureDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/JsonStructureDAO.java
new file mode 100644
index 0000000..7f8e544
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/JsonStructureDAO.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.dao.ifaces.integration.json;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JsonStructureDAO extends CustomDAOIfaces<JsonStructure, Long, JsonStructure> {
+
+ default JsonStructure loadSubJsonStructure(JsonStructure jsonStructure) {
+ List<JsonStructure> children = getChildren(jsonStructure.getId());
+ List<JsonStructure> subJsonStructure = new ArrayList<>();
+
+ for (JsonStructure j : children) {
+ subJsonStructure.add(loadSubJsonStructure(j));
+ }
+ jsonStructure.getFields().clear();
+ jsonStructure.getFields().addAll(subJsonStructure);
+
+ return jsonStructure;
+ }
+
+ default List<JsonStructure> getChildren(Long id) {
+ Query query = getEntityManager().createQuery("SELECT j from JsonStructure j where j.parent.id = :id ");
+ query.setParameter("id", id);
+
+ return (List<JsonStructure>) query.getResultList();
+ }
+
+ @Override
+ public default JsonStructure getById(Long id) {
+ Query query = getEntityManager().createQuery("SELECT j from JsonStructure j where j.id = :id ");
+ query.setParameter("id", id);
+ Optional<JsonStructure> optJsonStructure = ((List<JsonStructure>) query.getResultList()).stream().findFirst();
+
+ return optJsonStructure.isPresent() ? optJsonStructure.get() : null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/TypeFichierJsonDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/TypeFichierJsonDAO.java
new file mode 100644
index 0000000..6e5960d
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/integration/json/TypeFichierJsonDAO.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.dao.ifaces.integration.json;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.integration.json.TypeFichierJson;
+import java.util.List;
+import java.util.Optional;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TypeFichierJsonDAO extends CustomDAOIfaces<TypeFichierJson, Long, TypeFichierJson> {
+
+ @Override
+ public default TypeFichierJson getById(Long id) {
+ Query query = getEntityManager().createQuery("SELECT t from TypeFichierJson t where t.id = :id ");
+ query.setParameter("id", id);
+ Optional<TypeFichierJson> optJsonStructure = ((List<TypeFichierJson>) query.getResultList()).stream().findFirst();
+
+ return optJsonStructure.isPresent() ? optJsonStructure.get() : null;
+ }
+
+ TypeFichierJson findByReferentielAndByTypeFichier(String referentielVersion, String codeTypeFichier);
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/natureproduction/NatureProductionFichierDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/natureproduction/NatureProductionFichierDAO.java
new file mode 100644
index 0000000..892d17a
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/natureproduction/NatureProductionFichierDAO.java
@@ -0,0 +1,25 @@
+/*
+ * 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.fdxcommons.dao.ifaces.natureproduction;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichierId;
+import java.util.List;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface NatureProductionFichierDAO extends CustomDAOIfaces<NatureProductionFichier, NatureProductionFichierId, NatureProductionFichier> {
+
+ default List<NatureProductionFichier> getByReferentiel(String referentielVersion) {
+ Query query = getEntityManager().createQuery("SELECT n from NatureProductionFichier n where n.referentiel.version = :referentielVersion");
+ query.setParameter("referentielVersion", referentielVersion);
+
+ return query.getResultList();
+ }
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueDAO.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueDAO.java
new file mode 100644
index 0000000..a1987bc
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueDAO.java
@@ -0,0 +1,21 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.dao.ifaces.referentiel.historique;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistoriqueId;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielIntegrationHistoriqueDAO extends CustomDAOIfaces<ReferentielIntegrationHistorique, ReferentielIntegrationHistoriqueId, ReferentielIntegrationHistorique> {
+
+ public ReferentielIntegrationHistorique suitableIntegrationHistorique(String codeTypeFichier, String refVersion);
+
+ List<ReferentielIntegrationHistorique> suitableIntegrationHistorique(String refVersion);
+}
diff --git a/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/utils/SearchCriteriaBuilderUtil.java b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/utils/SearchCriteriaBuilderUtil.java
new file mode 100644
index 0000000..1938ebe
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-ifaces/src/main/java/com/megatim/fdxcommons/dao/ifaces/utils/SearchCriteriaBuilderUtil.java
@@ -0,0 +1,166 @@
+/*
+ * 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.fdxcommons.dao.ifaces.utils;
+
+import com.megatim.fdxcommons.model.enumeration.NumberOperator;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import com.megatim.fdxcommons.model.search.SearchCriteria;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.persistence.criteria.From;
+import javax.persistence.criteria.Join;
+import javax.persistence.criteria.Root;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SearchCriteriaBuilderUtil {
+
+ private SearchCriteriaBuilderUtil() {
+ }
+
+ public static <T, U> List<SearchCriteria> getSearchCriterias(U searchEntity, Class<T> entityClass, Root<?> root, List<SearchCriteria> externalSearchCriterias) {
+ Field[] entityFields = entityClass.getDeclaredFields();
+ List<SearchCriteria> searchCriterias = new ArrayList<>();
+
+ if (externalSearchCriterias != null) {
+ searchCriterias.addAll(externalSearchCriterias);
+ }
+
+ if (searchEntity == null) {
+ return searchCriterias;
+ }
+
+ Field[] searchEntityFields = searchEntity.getClass().getDeclaredFields();
+ for (Field searchEntityField : searchEntityFields) {
+ Search searchAnnotation = searchEntityField.getAnnotation(Search.class);
+
+ if (searchAnnotation != null && searchAnnotation.fieldName() != null && !searchAnnotation.fieldName().isEmpty()) {
+ String[] fieldPath = searchAnnotation.fieldName().split("\\.");
+ if (fieldPath.length == 1) {
+ if (isSearchFieldDescriptionCorrect(searchAnnotation.fieldName(), searchEntityField, entityFields)) {
+ searchCriterias.add(createSearchCriteria(searchAnnotation, searchAnnotation.fieldName(), searchEntityField, searchEntity, root));
+ }
+ } else if (fieldPath.length > 1) {
+ Join<Object, Object> join = null;
+ String fieldName = fieldPath[fieldPath.length - 1];
+ for (int i = 0; i < fieldPath.length - 1; i++) {
+ if (i == 0) {
+ join = root.join(fieldPath[i]);
+ } else {
+ if (join != null) {
+ join = join.join(fieldPath[i]);
+ }
+ }
+ }
+ if (isSearchHierarchicalFieldDescriptionCorrect(fieldPath, searchEntityField, entityFields)) {
+ searchCriterias.add(createSearchCriteria(searchAnnotation, fieldName, searchEntityField, searchEntity, join));
+ }
+ }
+ }
+
+ }
+ return searchCriterias;
+ }
+
+ private static SearchCriteria createSearchCriteria(Search searchAnnotation, String fieldName, Field searchEntityField, Object searchEntity, From<?, ?> from) {
+ SearchCriteria searchCriteria = new SearchCriteria();
+ searchCriteria.setFrom(from);
+ searchCriteria.setFieldName(fieldName);
+ searchCriteria.setOperateur(searchAnnotation.operateur());
+ searchCriteria.setFieldType(searchEntityField.getType());
+ Object fieldValue = getFieldValue(searchEntityField, searchEntity);
+ searchCriteria.setFieldValue(fieldValue);
+
+ if (searchAnnotation.operateur().equals(SearchAnnotationOperateur.NUMBER_OPERATOR)) {
+ try {
+ searchCriteria.setNumberOperator(getNumberOperatorFieldValue(searchAnnotation.operatorFieldName(), searchEntity));
+ } catch (IntrospectionException ex) {
+ }
+ }
+ return searchCriteria;
+ }
+
+ private static Object getFieldValue(Field field, Object searchEntity) {
+ Object value = null;
+ field.setAccessible(true);
+ try {
+ Method method = new PropertyDescriptor(field.getName(), searchEntity.getClass()).getReadMethod();
+ value = (Comparable<?>) method.invoke(searchEntity);
+ } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException | java.beans.IntrospectionException ex) {
+ }
+ return value;
+ }
+
+ private static NumberOperator getNumberOperatorFieldValue(String operatorFieldName, Object searchEntity) throws java.beans.IntrospectionException {
+ NumberOperator numberOperator = NumberOperator.UNKNOW;
+ Field[] fields = searchEntity.getClass().getDeclaredFields();
+ for (Field field : fields) {
+ if (field.getName().equals(operatorFieldName)) {
+ field.setAccessible(true);
+ try {
+ Method method = new PropertyDescriptor(field.getName(), searchEntity.getClass()).getReadMethod();
+ Object value = method.invoke(searchEntity);
+ if (value instanceof NumberOperator) {
+ numberOperator = (NumberOperator) value;
+ }
+ } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException ex) {
+ }
+ }
+ }
+ return numberOperator;
+ }
+
+ private static boolean isSearchHierarchicalFieldDescriptionCorrect(String[] fieldPath, Field searchEntityField, Field[] entityFields) {
+ String fieldName = fieldPath[0];
+ if (fieldPath.length == 1) {
+ return isSearchFieldDescriptionCorrect(fieldName, searchEntityField, entityFields);
+ } else {
+
+ Class<?> clazz = getFieldClass(fieldName, entityFields);
+ if (clazz != null) {
+ Field[] subFields = clazz.getDeclaredFields();
+ String[] subFieldPath = Arrays.copyOfRange(fieldPath, 1, fieldPath.length);
+ return isSearchHierarchicalFieldDescriptionCorrect(subFieldPath, searchEntityField, subFields);
+ } else {
+ return false;
+ }
+ }
+
+ }
+
+ private static Class<?> getFieldClass(String fieldName, Field[] entityFields) {
+ int index = getIndex(fieldName, entityFields);
+ return (index != -1) ? entityFields[index].getType() : null;
+ }
+
+ private static boolean isSearchFieldDescriptionCorrect(String fieldName, Field searchEntityField, Field[] entityFields) {
+ int index = getIndex(fieldName, entityFields);
+ return (index != -1) && isFieldTypeEquals(searchEntityField, entityFields[index]);
+ }
+
+ private static int getIndex(String fieldName, Field[] entityFields) {
+ int index = 0;
+ for (Field field : entityFields) {
+ if (fieldName.equals(field.getName())) {
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+
+ private static boolean isFieldTypeEquals(Field searchEntityField, Field entityField) {
+ return searchEntityField.getType().equals(entityField.getType());
+ }
+}
diff --git a/fdx-commons/fdxcommons-dao-impl/nb-configuration.xml b/fdx-commons/fdxcommons-dao-impl/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-impl/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-dao-impl/pom.xml b/fdx-commons/fdxcommons-dao-impl/pom.xml
new file mode 100644
index 0000000..0543be5
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-impl/pom.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.dao.impl</groupId>
+ <artifactId>fdxcommons-dao-impl</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.dao.ifaces</groupId>
+ <artifactId>fdxcommons-dao-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.4.2.Final</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>42.7.3</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxcommons-dao-impl</name>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-dao-impl/src/main/resources/app.properties b/fdx-commons/fdxcommons-dao-impl/src/main/resources/app.properties
new file mode 100644
index 0000000..33f4664
--- /dev/null
+++ b/fdx-commons/fdxcommons-dao-impl/src/main/resources/app.properties
@@ -0,0 +1,6 @@
+user.name=postgres
+password=mela
+adresse.ip=localhost
+port=5432
+database.name=fdxCommonsDB
+sgbd.name=megatim
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-model/nb-configuration.xml b/fdx-commons/fdxcommons-model/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-model/pom.xml b/fdx-commons/fdxcommons-model/pom.xml
new file mode 100644
index 0000000..f41f028
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/pom.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <jakartaee>8.0</jakartaee>
+ <version.lombok>1.18.18</version.lombok>
+ <version.mapstruct>1.4.2.Final</version.mapstruct>
+ <version.mapstruct-lombok>0.2.0</version.mapstruct-lombok>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ <optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct</artifactId>
+ <version>${version.mapstruct}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- Apiee -->
+ <dependency>
+ <groupId>com.github.phillip-kruger</groupId>
+ <artifactId>apiee-core</artifactId>
+ <version>1.0.8</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>reporting-adhoc</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-core</artifactId>
+ <version>5.4.2.Final</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.github.ua-parser</groupId>
+ <artifactId>uap-java</artifactId>
+ <version>1.6.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <!-- ... -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct-processor</artifactId>
+ <version>${version.mapstruct}</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <name>fdxcommons-model</name>
+
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/base/BaseEntity.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/base/BaseEntity.java
new file mode 100644
index 0000000..5e738dc
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/base/BaseEntity.java
@@ -0,0 +1,56 @@
+/*
+ * 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.fdxcommons.model.base;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@MappedSuperclass
+public class BaseEntity {
+
+ @Column(name = "TYPE_OPERATION")
+ @Enumerated(EnumType.STRING)
+ protected TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @CriteriaEntitySearch(libelle = "Date création", rang = 1)
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateCreation = new Date();
+
+ @CriteriaEntitySearch(libelle = "Crée par", rang = 2)
+ @Column(name = "USER_CREATION")
+ protected String utilisateurCreation;
+
+ @CriteriaEntitySearch(libelle = "Date dernière regen.", rang = 3, visible = false)
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateDerniereModification;
+
+ @CriteriaEntitySearch(libelle = "Modifié par", rang = 4, visible = false)
+ @Column(name = "USER_UPDATE")
+ protected String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ protected String utilisateurSuppression;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/BrokerProperties.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/BrokerProperties.java
new file mode 100644
index 0000000..0676f2e
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/BrokerProperties.java
@@ -0,0 +1,17 @@
+/*
+ * 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.fdxcommons.model.camel;
+
+/**
+ *
+ * @author ASUS
+ */
+public class BrokerProperties {
+
+ public static String HOSTNAME = "broker.hostname";
+ public static String PORT_NUMBER = "broker.port-number";
+ public static String USER_NAME = "broker.user-name";
+ public static String PASSWORD = "broker.password";
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelProperties.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelProperties.java
new file mode 100644
index 0000000..7e8c619
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelProperties.java
@@ -0,0 +1,37 @@
+/*
+ * 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.fdxcommons.model.camel;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CamelProperties {
+
+ public static String ERROR_DIR = "error";
+
+ public static String STANDALONE_TMP_DIR_PROPERTY = "fdx.api.integration-standalone-temp-dir";
+ public static String CONSULTATION_TMP_DIR = "fdx.api.integration-consultation-temp-dir";
+
+ public static String REFERENTIEL_LOCAL_PATH_PROPERTY = "fdx.api.referentiel-integration-local-path";
+ public static String FICHIER_LOCAL_PATH_PROPERTY = "fdx.api.fichier-integration-local-path";
+ public static String STANDALONE_DESTINATION_DIR_PROPERTY = "fdx.api.integration-standalone-destination-dir";
+ public static String CONSULTATION_DESTINATION_DIR_PROPERTY = "fdx.api.integration-consultation-destination-dir";
+
+ public static String REFERENTIEL_REMOTE_PATH_PROPERTY = "fdx.api.referentiel-integration-remote-path";
+ public static String FICHIER_REMOTE_PATH_PROPERTY = "fdx.api.fichier-integration-remote-path";
+ public static String STANDALONE_REMOTE_DIR_PROPERTY = "fdx.integration-standalone-remote";
+ public static String CONSULTATION_REMOTE_DIR_PROPERTY = "fdx.integration-consultation-remote";
+
+ public static String STANDALONE_USER_NAME = "fdx.integration-standalone-username";
+ public static String STANDALONE_PASSWORD = "fdx.integration-standalone-password";
+ public static String STANDALONE_HOST_NAME = "fdx.integration-standalone-hostname";
+ public static String STANDALONE_PORT = "fdx.integration-standalone-port";
+ public static String CONSULTATION_USER_NAME = "fdx.integration-consultation-username";
+ public static String CONSULTATION_PASSWORD = "fdx.integration-consultation-password";
+ public static String CONSULTATION_HOST_NAME = "fdx.integration-consultation-hostname";
+ public static String CONSULTATION_PORT = "fdx.integration-consultation-port";
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelRouteConfiguration.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelRouteConfiguration.java
new file mode 100644
index 0000000..de00848
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/CamelRouteConfiguration.java
@@ -0,0 +1,60 @@
+package com.megatim.fdxcommons.model.camel;
+
+import java.io.IOException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CamelRouteConfiguration {
+
+ private final LocalConfiguration localConfiguration;
+ private final SftpConfiguration sftpConfiguration;
+
+ public CamelRouteConfiguration(String configurationFilePath) {
+ FileProperties fileProperties = new FileProperties(configurationFilePath);
+ localConfiguration = new LocalConfiguration(fileProperties);
+ sftpConfiguration = new SftpConfiguration(fileProperties);
+ }
+
+ public boolean isStandaloneSftpConfigCorrect() throws IOException {
+ return sftpConfiguration.isStandaloneCorrect();
+ }
+
+ public boolean isStandaloneLocalConfigCorrect() throws IOException {
+ return localConfiguration.isStandaloneCorrect();
+ }
+
+ public boolean isConsultationConfigCorrect() throws IOException {
+ return localConfiguration.isConsultationCorrect() || sftpConfiguration.isConsultationCorrect();
+ }
+
+ public LocalConfiguration getLocalConfiguration() {
+ return localConfiguration;
+ }
+
+ public SftpConfiguration getSftpConfiguration() {
+ return sftpConfiguration;
+ }
+
+ public String standaloneURI() throws IOException {
+ return isStandaloneStfpConfigCorrect()
+ ? getSftpConfiguration().standaloneRouteURI()
+ : getLocalConfiguration().standaloneRouteURI();
+ }
+
+ public String consultationURI() throws IOException {
+ return isConsultationStfpConfigCorrect()
+ ? getSftpConfiguration().consultationRouteURI()
+ : getLocalConfiguration().consultationRouteURI();
+ }
+
+ private boolean isStandaloneStfpConfigCorrect() throws IOException {
+ return sftpConfiguration.isStandaloneCorrect();
+ }
+
+ private boolean isConsultationStfpConfigCorrect() throws IOException {
+ return sftpConfiguration.isStandaloneCorrect();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/FileProperties.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/FileProperties.java
new file mode 100644
index 0000000..311fac3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/FileProperties.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxcommons.model.camel;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FileProperties {
+
+ private final String configurationFilePath;
+ private final List<Properties> cachedProperties = new ArrayList<>(1);
+
+ public FileProperties(String configurationFilePath) {
+ this.configurationFilePath = configurationFilePath;
+ }
+
+ public Properties properties() throws FileNotFoundException, IOException {
+ if (cachedProperties.isEmpty()) {
+ try (FileInputStream fis = new FileInputStream(configurationFilePath)) {
+ Properties properties = new Properties();
+ properties.load(fis);
+ cachedProperties.add(properties);
+ }
+ }
+ return cachedProperties.get(0);
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/LocalConfiguration.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/LocalConfiguration.java
new file mode 100644
index 0000000..2b9ac03
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/LocalConfiguration.java
@@ -0,0 +1,80 @@
+package com.megatim.fdxcommons.model.camel;
+
+import java.io.IOException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class LocalConfiguration {
+
+ private final FileProperties fileProperties;
+
+ public LocalConfiguration(FileProperties fileProperties) {
+ this.fileProperties = fileProperties;
+ }
+
+ public String referentielRouteURI() throws IOException {
+ return "file:" + referentielLocalPath() + "?include=.*.zip" + routeParameters();
+ }
+
+ public String fichierRouteURI() throws IOException {
+ return "file:" + fichierLocalPath() + "?include=.*\\.(csv|txt)$" + routeParameters();
+ }
+
+ public String standaloneTmpRouteURI() throws IOException {
+ return "file:" + standaloneTmpDir() + "?include=.*\\.(csv|txt)$&delete=true" + routeParameters();
+ }
+
+ public String standaloneRouteURI() throws IOException {
+ return "file:" + standaloneDestinationDir() + "?include=.*\\.(csv|txt)$" + routeParameters();
+ }
+
+ public String standaloneTmpDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_TMP_DIR_PROPERTY);
+ }
+
+ public String consultationTmpRouteURI() throws IOException {
+ return "file:" + consultationTmpDir() + "?include=.*\\.(csv|txt)$&delete=true" + routeParameters();
+ }
+
+ public String consultationRouteURI() throws IOException {
+ return "file:" + consultationDestinationDir() + "?include=.*\\.(csv|txt)$" + routeParameters();
+ }
+
+ public String consultationTmpDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_TMP_DIR);
+ }
+
+ public boolean isStandaloneCorrect() throws IOException {
+ return referentielLocalPath() != null
+ && fichierLocalPath() != null
+ && standaloneTmpDir() != null
+ && standaloneDestinationDir() != null;
+ }
+
+ public boolean isConsultationCorrect() throws IOException {
+ return consultationTmpDir() != null && consultationDestinationDir() != null;
+ }
+
+ private String routeParameters() {
+ return "&moveFailed=" + CamelProperties.ERROR_DIR + "&noop=true&readLock=rename";
+ }
+
+ public String referentielLocalPath() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.REFERENTIEL_LOCAL_PATH_PROPERTY);
+ }
+
+ public String fichierLocalPath() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.FICHIER_LOCAL_PATH_PROPERTY);
+ }
+
+ private String standaloneDestinationDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_DESTINATION_DIR_PROPERTY);
+ }
+
+ public String consultationDestinationDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_DESTINATION_DIR_PROPERTY);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/SftpConfiguration.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/SftpConfiguration.java
new file mode 100644
index 0000000..f731730
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/camel/SftpConfiguration.java
@@ -0,0 +1,145 @@
+package com.megatim.fdxcommons.model.camel;
+
+import java.io.IOException;
+
+public class SftpConfiguration {
+
+ private final FileProperties fileProperties;
+
+ public SftpConfiguration(FileProperties fileProperties) {
+ this.fileProperties = fileProperties;
+ }
+
+ public String referentielRouteURI() throws IOException {
+ return buildURI(referentielRemotePath(), standaloneHostName(), standalonePort(), standaloneUserName(), standalonePassword());
+ }
+
+ public String fichierRouteURI() throws IOException {
+ return buildURI(fichierRemotePath(), standaloneHostName(), standalonePort(), standaloneUserName(), standalonePassword());
+ }
+
+ public String standaloneRouteURI() throws IOException {
+ return buildURI(standaloneDestinationDir(), standaloneHostName(), standalonePort(), standaloneUserName(), standalonePassword());
+ }
+
+ public String consultationRouteURI() throws IOException {
+ return buildURI(consultationDestinationDir(), consultationHostName(), consultationPort(), consultationUserName(), consultationPassword());
+ }
+
+ public String standaloneTmpDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_TMP_DIR_PROPERTY);
+ }
+
+ public String consultationTmpDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_TMP_DIR);
+ }
+
+ private String buildURI(String path, String hostName, int port, String userName, String password) throws IOException {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder
+ .append(firstURIpart(hostName, port))
+ .append(path)
+ .append(secondURIpart(userName, password));
+ return stringBuilder.toString();
+ }
+
+ private String firstURIpart(String hostName, int port) throws IOException {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder
+ .append("sftp:")
+ .append(hostName)
+ .append(":")
+ .append(port)
+ .append("/");
+ return stringBuilder.toString();
+ }
+
+ private String secondURIpart(String userName, String password) throws IOException {
+ StringBuilder stringBuilder = new StringBuilder();
+ stringBuilder
+ .append("?username=").append(userName)
+ .append("&password=").append(password)
+ .append("&streamDownload=true&stepwise=false&disconnect=true&useUserKnownHostsFile=false&readLock=changed&readLockLoggingLevel=ERROR")
+ .append("&jschLoggingLevel=ERROR&runLoggingLevel=OFF&moveFailed=error&delete=true");
+ return stringBuilder.toString();
+ }
+
+ public boolean isStandaloneCorrect() throws IOException {
+ return standaloneRemote()
+ && referentielRemotePath() != null
+ && fichierRemotePath() != null
+ && standaloneDestinationDir() != null
+ && standaloneUserName() != null
+ && standalonePassword() != null
+ && standaloneHostName() != null;
+ }
+
+ public boolean isConsultationCorrect() throws IOException {
+ return consultationRemote()
+ && consultationDestinationDir() != null
+ && consultationUserName() != null
+ && consultationPassword() != null
+ && consultationHostName() != null;
+ }
+
+ private String referentielRemotePath() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.REFERENTIEL_REMOTE_PATH_PROPERTY);
+ }
+
+ private String fichierRemotePath() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.FICHIER_REMOTE_PATH_PROPERTY);
+ }
+
+ private boolean standaloneRemote() throws IOException {
+ String remoteIntegrationProperty = fileProperties.properties().getProperty(CamelProperties.STANDALONE_REMOTE_DIR_PROPERTY);
+ return remoteIntegrationProperty != null && Boolean.parseBoolean(remoteIntegrationProperty);
+ }
+
+ private boolean consultationRemote() throws IOException {
+ String remoteIntegrationProperty = fileProperties.properties().getProperty(CamelProperties.CONSULTATION_REMOTE_DIR_PROPERTY);
+ return remoteIntegrationProperty != null && Boolean.parseBoolean(remoteIntegrationProperty);
+ }
+
+ private String standaloneDestinationDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_DESTINATION_DIR_PROPERTY);
+ }
+
+ private String consultationDestinationDir() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_DESTINATION_DIR_PROPERTY);
+ }
+
+ private String standaloneUserName() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_USER_NAME);
+ }
+
+ private String standalonePassword() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_PASSWORD);
+ }
+
+ private String standaloneHostName() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.STANDALONE_HOST_NAME);
+ }
+
+ private int standalonePort() throws IOException {
+ String portProperty = fileProperties.properties().getProperty(CamelProperties.STANDALONE_PORT);
+ return portProperty != null ? Integer.parseInt(portProperty) : 22;
+ }
+
+ private String consultationUserName() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_USER_NAME);
+ }
+
+ private String consultationPassword() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_PASSWORD);
+ }
+
+ private String consultationHostName() throws IOException {
+ return fileProperties.properties().getProperty(CamelProperties.CONSULTATION_HOST_NAME);
+ }
+
+ private int consultationPort() throws IOException {
+ String portProperty = fileProperties.properties().getProperty(CamelProperties.CONSULTATION_PORT);
+ return portProperty != null ? Integer.parseInt(portProperty) : 22;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/CommonDataProduction.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/CommonDataProduction.java
new file mode 100644
index 0000000..843bc97
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/CommonDataProduction.java
@@ -0,0 +1,73 @@
+package com.megatim.fdxcommons.model.dataproduction;
+
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@MappedSuperclass
+public class CommonDataProduction implements Serializable {
+
+ @Id
+ private Long id;
+
+ @NotNull(message = "Le type de fichier est obligatoire")
+ @CriteriaEntitySearch(libelle = "Type du Fichier", rang = 1)
+ protected String codeTypeFichier;
+
+ @CriteriaEntitySearch(libelle = "Participant", rang = 2)
+ protected String codeParticipant;
+
+ @NotNull(message = "Le référentiel est obligatoire")
+ @CriteriaEntitySearch(libelle = "Référentiel", rang = 3)
+ protected String referentielVersion;
+
+ @NotNull(message = "La source est obligatoire")
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Source de la production", rang = 4)
+ protected DataProductionSource source;
+
+ @NotNull(message = "La date est obligatoire")
+ @CriteriaEntitySearch(libelle = "Date création de la production", rang = 0)
+ protected LocalDateTime dateProduction;
+
+ @CriteriaEntitySearch(libelle = "Nom du Fichier", rang = 5)
+ protected String fileName;
+
+ @NotNull(message = "La statut de la production est obligatoire")
+ @Enumerated(EnumType.STRING)
+ protected StatutDataProduction statutDataProduction = StatutDataProduction.A_CONSOMMER;
+
+ protected LocalDateTime fileDate;
+
+ @Enumerated(EnumType.STRING)
+ protected DataProductionType dataProductionType = DataProductionType.ADD;
+
+ protected String token;
+
+ protected LocalDateTime dateMiseAJour;
+
+ protected Long nbreElements = 0L;
+
+ protected Long tailleFichier = 0L;//en octet
+
+ protected String integrationFileName;// Nom du fichier généré pour consommation par Standalone et Consultation
+
+ protected String tokenDirectory;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionSource.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionSource.java
new file mode 100644
index 0000000..f706076
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionSource.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.dataproduction;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum DataProductionSource {
+ API("API"), FICHIER("FICHIER");
+
+ private final String value;
+
+ private DataProductionSource(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return this.value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return this.value;
+ }
+
+ @EnumValue
+ public static DataProductionSource fromValue(String value) {
+ if (value == null) {
+ return null;
+ }
+ if (value.equalsIgnoreCase("api")) {
+ return DataProductionSource.API;
+ } else if (value.equalsIgnoreCase("fichier")) {
+ return DataProductionSource.FICHIER;
+ } else {
+ return null;
+
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionToDelete.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionToDelete.java
new file mode 100644
index 0000000..6144750
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionToDelete.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.dataproduction;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * Cette entité est utilisé pour les types de fichier referentielle dont il faut supprimer les anciennes données à chaque nouvelle production
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+public class DataProductionToDelete implements Serializable {
+
+ @Id
+ private Long id;// Id de la production à conserver
+
+ private LocalDateTime dateCreation;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionType.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionType.java
new file mode 100644
index 0000000..6198fb5
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/DataProductionType.java
@@ -0,0 +1,9 @@
+package com.megatim.fdxcommons.model.dataproduction;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum DataProductionType {
+ ADD, UPDATE, DELETE;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaData.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaData.java
new file mode 100644
index 0000000..f6369ff
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaData.java
@@ -0,0 +1,74 @@
+/*
+ * 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.fdxcommons.model.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.dataproduction.metadata.constraint.ProductionMetaDataConstraint;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CollectionTable;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@ProductionMetaDataConstraint
+@Entity
+public class ProductionMetaData implements Serializable {
+
+ @NotNull(message = "L'identifiant de la production est obligatoire")
+ @Id
+ private Long productionId;
+
+ @NotNull(message = "Le type de production est obligatoire")
+ private String dataProductionType;
+
+ private Long startIndex; //Index de debut dans le cas d'un ADD
+
+ @NotNull(message = "Le nombre d'éléments de la production est obligatoire")
+ private Long nbreElts;
+
+ @Transient
+ private CommonDataProduction dataProduction;
+
+ @ElementCollection(targetClass = Long.class, fetch = FetchType.EAGER)
+ @CollectionTable(
+ name = "productionMetaData_indexes", // Name of the table for the collection
+ joinColumns = {
+ @JoinColumn(name = "productionId")
+ } // Foreign key column in the collection table
+ )
+ private final Set<Long> indexes = new HashSet<>();//Liste des indexes dans le cas d'un Update
+
+ public ProductionMetaData(Long productionId, Long nbreElts) {
+ this.productionId = productionId;
+ this.nbreElts = nbreElts;
+ }
+
+ public ProductionMetaData(Long productionId, Long startIndex, Long nbreElts) {
+ this.productionId = productionId;
+ this.startIndex = startIndex;
+ this.nbreElts = nbreElts;
+ }
+
+ public ProductionMetaData(CommonDataProduction dataProduction) {
+ this.dataProduction = dataProduction;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaDataId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaDataId.java
new file mode 100644
index 0000000..0201dfd
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/ProductionMetaDataId.java
@@ -0,0 +1,26 @@
+/*
+ * 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.fdxcommons.model.dataproduction.metadata;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ProductionMetaDataId implements Serializable{
+
+ private Long fdxIndex;
+
+ private Long lineNumber;
+
+ private Long productionId;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataConstraint.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataConstraint.java
new file mode 100644
index 0000000..c8b608d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataConstraint.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.model.dataproduction.metadata.constraint;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+/**
+ *
+ * @author ASUS
+ */
+@Documented
+@Constraint(validatedBy = ProductionMetaDataValidator.class)
+@Target( { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ProductionMetaDataConstraint {
+ String message() default "L'index de début est obligatoire pour les productions d'ajout ";
+ Class<?>[] groups() default {};
+ Class<? extends Payload>[] payload() default {};
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataValidator.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataValidator.java
new file mode 100644
index 0000000..82abdba
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dataproduction/metadata/constraint/ProductionMetaDataValidator.java
@@ -0,0 +1,26 @@
+/*
+ * 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.fdxcommons.model.dataproduction.metadata.constraint;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ProductionMetaDataValidator implements ConstraintValidator<ProductionMetaDataConstraint, ProductionMetaData> {
+
+ @Override
+ public void initialize(ProductionMetaDataConstraint cons) {
+ }
+
+ @Override
+ public boolean isValid(ProductionMetaData pmd, ConstraintValidatorContext cxt) {
+ return pmd.getDataProductionType().equals(DataProductionType.ADD) ? pmd.getStartIndex() != null : true;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/CommonDataProductionDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/CommonDataProductionDto.java
new file mode 100644
index 0000000..1744aeb
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/CommonDataProductionDto.java
@@ -0,0 +1,52 @@
+/*
+ * 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.fdxcommons.model.dtos.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class CommonDataProductionDto {
+
+ private Long id;
+
+ private String codeTypeFichier;
+
+ private String codeParticipant;
+
+ private String referentielVersion;
+
+ private DataProductionSource source;
+
+ private LocalDateTime dateProduction;
+
+ private String fileName;
+
+ private StatutDataProduction statutDataProduction;
+
+ private LocalDateTime fileDate;
+
+ private DataProductionType dataProductionType;
+
+ private String token;
+
+ private LocalDateTime dateMiseAJour;
+
+ private Long nbreElements;
+
+ private Long tailleFichier;
+
+ private String integrationFileName;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/DataProductionDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/DataProductionDto.java
new file mode 100644
index 0000000..f4f1b93
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/DataProductionDto.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxcommons.model.dtos.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class DataProductionDto {
+
+ private Long id;
+
+ @PrintColumn(libelle = "Type du Fichier")
+ private String codeTypeFichier;
+
+ @PrintColumn(libelle = "Participant")
+ private String codeParticipant;
+
+ @PrintColumn(libelle = "Référentiel")
+ private String referentielVersion;
+
+ @PrintColumn(libelle = "Source de la production")
+ private String source;
+
+ @PrintColumn(libelle = "Date de la production")
+ private LocalDateTime dateProduction;
+
+ @PrintColumn(libelle = "Nom du fichier")
+ private String fileName;
+
+ private StatutDataProduction statutDataProduction;
+
+ private LocalDateTime fileDate;
+
+ private DataProductionType dataProductionType;
+
+ private String token;
+
+ private LocalDateTime dateMiseAJour;
+
+ private Long nbreElements;
+
+ private Long tailleFichier;
+
+ private String integrationFileName;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/ProductionMetaDataDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/ProductionMetaDataDto.java
new file mode 100644
index 0000000..4c402f9
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/dataproduction/ProductionMetaDataDto.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.dtos.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import java.util.Set;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ProductionMetaDataDto {
+
+ private Long productionId;
+
+ private DataProductionType dataProductionType;
+
+ private Long startIndex; //Index de debut dans le cas d'un ADD
+
+ private Long nbreElts;
+
+ private CommonDataProductionDto dataProduction;
+
+ private Set<Long> indexes;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/integration/ColumnDefinitionDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/integration/ColumnDefinitionDto.java
new file mode 100644
index 0000000..df57db7
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/integration/ColumnDefinitionDto.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxcommons.model.dtos.integration;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ColumnDefinitionDto {
+
+ private String name;
+ private TypeDonnee typeDonnee;
+ private String formatDate;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceDto.java
new file mode 100644
index 0000000..5da6552
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceDto.java
@@ -0,0 +1,32 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ApplicationSourceDto {
+
+ private String libelle;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceSlimDto.java
new file mode 100644
index 0000000..0250bf9
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ApplicationSourceSlimDto.java
@@ -0,0 +1,30 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ApplicationSourceSlimDto {
+
+ private String libelle;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierDto.java
new file mode 100644
index 0000000..bde6e73
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierDto.java
@@ -0,0 +1,49 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.TypeExtension;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ExtensionFichierDto {
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String extension;
+
+ @PrintColumn(libelle = "Libellé", rang = 3)
+ private TypeExtension typeExtension;
+
+ @PrintColumn(libelle = "Libellé", rang = 1)
+ private String libelle;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 5)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 6)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 7)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 8)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+ @PrintColumn(rang = 4, libelle = "Référentiel")
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierSlimDto.java
new file mode 100644
index 0000000..0ae0efb
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ExtensionFichierSlimDto.java
@@ -0,0 +1,28 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.TypeExtension;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ExtensionFichierSlimDto {
+
+ private String extension;
+
+ private TypeExtension typeExtension;
+
+ private String libelle;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudDto.java
new file mode 100644
index 0000000..db27d19
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudDto.java
@@ -0,0 +1,55 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupeNoeudDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @PrintColumn(libelle = "Libellé", rang = 3)
+ private String description;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 5)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 6)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 7)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 8)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+// private List<NoeudSlimDto> noeuds = new ArrayList<>();
+//
+// private List<RoutageSlimDto> routageEnvois = new ArrayList<>();
+//
+// private List<RoutageSlimDto> routageReceptions = new ArrayList<>();
+
+ @PrintColumn(rang = 4, libelle = "Référentiel")
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudSlimDto.java
new file mode 100644
index 0000000..5eb8528
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeNoeudSlimDto.java
@@ -0,0 +1,32 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupeNoeudSlimDto {
+
+ private String code;
+
+ private String libelle;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantDto.java
new file mode 100644
index 0000000..413239a
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantDto.java
@@ -0,0 +1,53 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupeParticipantDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @PrintColumn(libelle = "Libellé", rang = 3)
+ private String description;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 5)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 6)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 7)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 8)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+// private List<Participant> participants = new ArrayList<>();
+//
+// private List<Routage> routageEnvois = new ArrayList<>();
+//
+// private List<Routage> routageReceptions = new ArrayList<>();
+
+ @PrintColumn(rang = 4, libelle = "Référentiel")
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantSlimDto.java
new file mode 100644
index 0000000..152311c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/GroupeParticipantSlimDto.java
@@ -0,0 +1,33 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupeParticipantSlimDto {
+
+ private String code;
+
+ private String libelle;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudDto.java
new file mode 100644
index 0000000..5e29522
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudDto.java
@@ -0,0 +1,56 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class NoeudDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 5)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 6)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 7)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 8)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+ private ParticipantSlimDto participant;
+
+// private List<RoutageSlimDto> routageEnvois = new ArrayList<>();
+//
+// private List<RoutageSlimDto> routageReceptions = new ArrayList<>();
+
+ @PrintColumn(rang = 3, libelle = "Référentiel")
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+ @PrintColumn(rang = 4, libelle = "Participant")
+ public String getParticipantDescription() {
+ return participant.getCode() + "- " + participant.getLibelle();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudSlimDto.java
new file mode 100644
index 0000000..8096b2d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/NoeudSlimDto.java
@@ -0,0 +1,33 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class NoeudSlimDto {
+
+ @PrintColumn(libelle = "Code", rang = 2)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 1)
+ private String libelle;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantDto.java
new file mode 100644
index 0000000..ee8309b
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantDto.java
@@ -0,0 +1,64 @@
+package com.megatim.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import com.megatim.reporting.adhoc.annotations.PrintList;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ParticipantDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ private String rue;
+
+ private String adresse;
+
+ private String ville;
+
+ private String email;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 5)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 6)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 7)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 8)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+ private PaysSlimDto pays;
+
+ @PrintList(titre = "Liste des noeuds", classe = NoeudSlimDto.class, rang = 1)
+ private List<NoeudSlimDto> noeuds = new ArrayList<>();
+
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+ @PrintColumn(libelle = "Pays", rang = 4)
+ public String getPaysDescription() {
+ return pays.getLibelle();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantSlimDto.java
new file mode 100644
index 0000000..77076f3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ParticipantSlimDto.java
@@ -0,0 +1,43 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ParticipantSlimDto {
+
+ @PrintColumn(libelle = "Code")
+ private String code;
+
+ @PrintColumn(libelle = "Libellé")
+ private String libelle;
+
+ private String description;
+
+ private String rue;
+
+ private String adresse;
+
+ private String ville;
+
+ private String email;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysDto.java
new file mode 100644
index 0000000..1b08869
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysDto.java
@@ -0,0 +1,51 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import com.megatim.reporting.adhoc.annotations.PrintList;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class PaysDto {
+
+ @PrintColumn(libelle = "Code", rang = 2)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 1)
+ private String libelle;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 4)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 5)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 6)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 7)
+ private String lastModifiedBy;
+
+ private ReferentielSlimDto referentiel;
+
+ @PrintList(titre = "Liste des participants", classe = ParticipantSlimDto.class)
+ private List<ParticipantSlimDto> participants = new ArrayList<>();
+
+ @PrintColumn(rang = 3, libelle = "Référentiel")
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysSlimDto.java
new file mode 100644
index 0000000..5da9e43
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/PaysSlimDto.java
@@ -0,0 +1,30 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class PaysSlimDto {
+
+ private String code;
+
+ private String libelle;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielDto.java
new file mode 100644
index 0000000..9e7b523
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielDto.java
@@ -0,0 +1,50 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ReferentielDto {
+
+ @PrintColumn(libelle = "Version", rang = 1)
+ private String version;
+
+ private StatutReferentiel statutReferentiel;
+
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String description;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 4)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 5)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 6)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 7)
+ private String lastModifiedBy;
+
+ private LocalDateTime dateGeneration;
+
+// private List<ExtensionFichierSlimDto> extensionFichiers = new ArrayList<>();
+
+ @PrintColumn(libelle = "Statut Référentiel", rang = 3)
+ public String getStatutReferentielDescription() {
+ return statutReferentiel.getValue();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielSlimDto.java
new file mode 100644
index 0000000..ea5519c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ReferentielSlimDto.java
@@ -0,0 +1,35 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ReferentielSlimDto {
+
+ private StatutReferentiel statutReferentiel;
+
+ private String version;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ private LocalDateTime dateGeneration;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageDto.java
new file mode 100644
index 0000000..5fc70a7
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageDto.java
@@ -0,0 +1,111 @@
+package com.megatim.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author ASUS
+ */
+public class RoutageDto {
+
+ private String code;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 3)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 4)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 5)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 6)
+ private String lastModifiedBy;
+
+ private TypeFichierSlimDto typeFichier;
+
+ private ReferentielSlimDto referentiel;
+
+// private List<NoeudSlimDto> noeudsEnvoi = new ArrayList<>();
+//
+// private List<GroupeNoeudSlimDto> groupeNoeudsEnvoi = new ArrayList<>();
+//
+// private List<ParticipantSlimDto> participantsEnvoi = new ArrayList<>();
+//
+// private List<GroupeParticipantSlimDto> groupeParticipantsEnvoi = new ArrayList<>();
+//
+// private List<NoeudSlimDto> noeudsReception = new ArrayList<>();
+//
+// private List<GroupeNoeudSlimDto> groupeNoeudsReception = new ArrayList<>();
+//
+// private List<ParticipantSlimDto> participantsReception = new ArrayList<>();
+//
+// private List<GroupeParticipantSlimDto> groupeParticipantsReception = new ArrayList<>();
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public LocalDateTime getDateCreation() {
+ return dateCreation;
+ }
+
+ public void setDateCreation(LocalDateTime dateCreation) {
+ this.dateCreation = dateCreation;
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return dateMiseAjour;
+ }
+
+ public void setDateMiseAjour(LocalDateTime dateMiseAjour) {
+ this.dateMiseAjour = dateMiseAjour;
+ }
+
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public String getLastModifiedBy() {
+ return lastModifiedBy;
+ }
+
+ public void setLastModifiedBy(String lastModifiedBy) {
+ this.lastModifiedBy = lastModifiedBy;
+ }
+
+ public TypeFichierSlimDto getTypeFichier() {
+ return typeFichier;
+ }
+
+ public void setTypeFichier(TypeFichierSlimDto typeFichier) {
+ this.typeFichier = typeFichier;
+ }
+
+ public ReferentielSlimDto getReferentiel() {
+ return referentiel;
+ }
+
+ public void setReferentiel(ReferentielSlimDto referentiel) {
+ this.referentiel = referentiel;
+ }
+
+ @PrintColumn(libelle = "TypeFichier", rang = 1)
+ public String getTypeFichierDescription() {
+ return typeFichier.getLibelle();
+ }
+
+ @PrintColumn(libelle = "Référentiel", rang = 2)
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageSlimDto.java
new file mode 100644
index 0000000..549a597
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/RoutageSlimDto.java
@@ -0,0 +1,62 @@
+package com.megatim.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author ASUS
+ */
+public class RoutageSlimDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getCode() {
+ return this.code;
+ }
+
+ public LocalDateTime getDateCreation() {
+ return dateCreation;
+ }
+
+ public void setDateCreation(LocalDateTime dateCreation) {
+ this.dateCreation = dateCreation;
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return dateMiseAjour;
+ }
+
+ public void setDateMiseAjour(LocalDateTime dateMiseAjour) {
+ this.dateMiseAjour = dateMiseAjour;
+ }
+
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public String getLastModifiedBy() {
+ return lastModifiedBy;
+ }
+
+ public void setLastModifiedBy(String lastModifiedBy) {
+ this.lastModifiedBy = lastModifiedBy;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierDto.java
new file mode 100644
index 0000000..823214c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierDto.java
@@ -0,0 +1,66 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TypeFichierDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 6)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 7)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 8)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 9)
+ private String lastModifiedBy;
+
+ private CategorieFichier categorieFichier;
+
+ private ParticipantSlimDto participant;
+
+ private ReferentielSlimDto referentiel;
+
+ private ExtensionFichierSlimDto extensionFichier;
+
+// private List<RoutageSlimDto> routages = new ArrayList<>();
+
+ @PrintColumn(libelle = "Catégorie Fichier", rang = 3)
+ public String getCategorieFichierDescription() {
+ return categorieFichier.getValue();
+ }
+
+ @PrintColumn(libelle = "Référentiel", rang = 4)
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+ @PrintColumn(rang = 5, libelle = "Participant")
+ public String getParticipantDescription() {
+ return participant.getCode() + "- " + participant.getLibelle();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierFormDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierFormDto.java
new file mode 100644
index 0000000..1c8e18e
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierFormDto.java
@@ -0,0 +1,45 @@
+package com.megatim.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TypeFichierFormDto {
+
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 6)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 7)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 8)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 9)
+ private String lastModifiedBy;
+
+ private CategorieFichier categorieFichier;
+
+ private ParticipantSlimDto participant;
+
+ private ReferentielSlimDto referentiel;
+
+ private ExtensionFichierSlimDto extensionFichier;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierSlimDto.java
new file mode 100644
index 0000000..9aa0146
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/TypeFichierSlimDto.java
@@ -0,0 +1,36 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TypeFichierSlimDto {
+
+ private String code;
+
+ private String libelle;
+
+ private String description;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ private CategorieFichier categorieFichier;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationDto.java
new file mode 100644
index 0000000..972d380
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationDto.java
@@ -0,0 +1,49 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ValidateurFichierConfigurationDto {
+
+ @PrintColumn(libelle = "Nom du fichier", rang = 1)
+ private String fileName;
+
+ @PrintColumn(libelle = "DATE CREATION", rang = 4)
+ private LocalDateTime dateCreation;
+
+ @PrintColumn(libelle = "DATE DERN. MISE A JOUR", rang = 5)
+ private LocalDateTime dateMiseAjour;
+
+ @PrintColumn(libelle = "CREE PAR", rang = 6)
+ private String createBy;
+
+ @PrintColumn(libelle = "MODIFIE PAR", rang = 7)
+ private String lastModifiedBy;
+
+ private TypeFichierSlimDto typeFichier;
+
+ private ReferentielSlimDto referentiel;
+
+ @PrintColumn(libelle = "TypeFichier", rang = 2)
+ public String getTypeFichierDescription() {
+ return typeFichier.getLibelle();
+ }
+
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ public String getReferentielVersion() {
+ return referentiel.getVersion();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationSlimDto.java
new file mode 100644
index 0000000..cfa9326
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierConfigurationSlimDto.java
@@ -0,0 +1,26 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class ValidateurFichierConfigurationSlimDto {
+ private String fileName;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierDto.java
new file mode 100644
index 0000000..ef21657
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierDto.java
@@ -0,0 +1,33 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ValidateurFichierDto {
+
+ private String id;
+
+ private int nombrePosition;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ private TypeFichierSlimDto typeFichier;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierSlimDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierSlimDto.java
new file mode 100644
index 0000000..66c5dc4
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/referentiel/ValidateurFichierSlimDto.java
@@ -0,0 +1,30 @@
+/*
+ * 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.fdxcommons.model.dtos.referentiel;
+
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ValidateurFichierSlimDto {
+
+ private String id;
+
+ private int nombrePosition;
+
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/PlanificationDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/PlanificationDto.java
new file mode 100644
index 0000000..97bde45
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/PlanificationDto.java
@@ -0,0 +1,70 @@
+/*
+ * 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.fdxcommons.model.dtos.remoteproduction;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.remotedataproduction.enums.ScheduleAction;
+import com.megatim.fdxcommons.model.remotedataproduction.enums.TypePas;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class PlanificationDto {
+
+ private Long id;
+
+ private String description;
+
+ private Boolean executeOnce;
+
+ private Boolean active;
+
+ private LocalDateTime nextExecution;
+
+ private ScheduleAction scheduleAction;
+
+ private int heureDebutTache;
+ private int minuteDebutTache;
+ private int secondeDebutTache;
+
+ private int heureFinTache;
+ private int minuteFinTache;
+ private int secondeFinTache;
+
+ private int intervalleTache;
+
+ private TypePas typePas;
+
+ private boolean monday;
+ private boolean tuesday;
+ private boolean wednesday;
+ private boolean thursday;
+ private boolean friday;
+ private boolean saturday;
+ private boolean sunday;
+
+ private TypeOperation typeOperation;
+
+ private Date dateCreation;
+
+ private String utilisateurCreation;
+
+ private Date dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private Date dateSuppression;
+
+ private String utilisateurSuppression;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/RemoteConfigurationDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/RemoteConfigurationDto.java
new file mode 100644
index 0000000..3734cf4
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/dtos/remoteproduction/RemoteConfigurationDto.java
@@ -0,0 +1,47 @@
+/*
+ * 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.fdxcommons.model.dtos.remoteproduction;
+
+import com.megatim.fdxcommons.model.enumeration.RemoteTypeAction;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.util.Date;
+import java.util.List;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class RemoteConfigurationDto {
+
+ private String codeTypeFichier;
+
+ private String codeParticipant;
+
+ private String url;
+
+ private TypeOperation typeOperation;
+
+ private RemoteTypeAction remoteTypeAction;
+
+ private Date dateCreation;
+
+ private String utilisateurCreation;
+
+ private Date dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private Date dateSuppression;
+
+ private String utilisateurSuppression;
+
+ private List<PlanificationDto> planifications;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CategorieFichier.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CategorieFichier.java
new file mode 100644
index 0000000..46a5e7c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CategorieFichier.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum CategorieFichier {
+ STRUCTURE("STRUCTURE"),
+ SEMI_STRUCTURE("SEMI STRUCTURE"),
+ NON_STRUCTURE("NON STRUCTURE");
+
+ private final String value;
+
+ private CategorieFichier(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public static CategorieFichier fromValeur(String value) {
+ switch (value) {
+ case "STRUCTURE":
+ return CategorieFichier.STRUCTURE;
+ case "SEMI STRUCTURE":
+ return CategorieFichier.SEMI_STRUCTURE;
+ case "NON STRUCTURE":
+ return CategorieFichier.NON_STRUCTURE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/ColumnStatus.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/ColumnStatus.java
new file mode 100644
index 0000000..cd9ef3d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/ColumnStatus.java
@@ -0,0 +1,24 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum ColumnStatus {
+ ADD("ADD"), MODIFY("MODIFY");
+
+ private final String status;
+
+ private ColumnStatus(String status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return status;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CriteriaLogicConnector.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CriteriaLogicConnector.java
new file mode 100644
index 0000000..be2f152
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/CriteriaLogicConnector.java
@@ -0,0 +1,10 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum CriteriaLogicConnector {
+ OR,
+ AND;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatIntegration.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatIntegration.java
new file mode 100644
index 0000000..6600d96
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatIntegration.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum EtatIntegration {
+ NOUVEAU, ENVOYE;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatOperation.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatOperation.java
new file mode 100644
index 0000000..4fe44c6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/EtatOperation.java
@@ -0,0 +1,28 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum EtatOperation {
+
+ ATTENTE_VALIDATION("ATTENTE VALIDATION"),
+ ACTIF("ACTIF"),
+ REJETE("REJETE"),
+ INNACTIF("INNACTIF");
+
+ private final String etat;
+
+ private EtatOperation(String etat) {
+ this.etat = etat;
+ }
+
+ @JsonValue
+ public String getEtat() {
+ return etat;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/FonctionAggregation.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/FonctionAggregation.java
new file mode 100644
index 0000000..2cad948
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/FonctionAggregation.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum FonctionAggregation {
+
+ MAX("MAXIMUM"),
+ MIN("MINIMUM"),
+ SUM("SOMME"),
+ COUNT("COMPTE"),
+ AVG("MOYENNE");
+
+ private final String value;
+
+ private FonctionAggregation(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @EnumValue
+ public static FonctionAggregation fromValeur(String value) {
+
+ if (value.equalsIgnoreCase("MAXIMUM")) {
+ return FonctionAggregation.MAX;
+ } else if (value.equalsIgnoreCase("MINIMUM")) {
+ return FonctionAggregation.MIN;
+ } else if (value.equalsIgnoreCase("SOMME")) {
+ return FonctionAggregation.SUM;
+ } else if (value.equalsIgnoreCase("COMPTE")) {
+ return FonctionAggregation.COUNT;
+ } else if (value.equalsIgnoreCase("MOYENNE")) {
+ return FonctionAggregation.AVG;
+ } else {
+ return null;
+ }
+
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Gravite.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Gravite.java
new file mode 100644
index 0000000..3fdbeaf
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Gravite.java
@@ -0,0 +1,25 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+public enum Gravite {
+
+ INFO("info"),
+ WARNING("warning"),
+ ERROR("error");
+
+ private String name = "";
+
+ //Constructeur
+ Gravite(String name){
+ this.name = name;
+ }
+
+ @Override
+ public String toString(){
+ return name;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/NumberOperator.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/NumberOperator.java
new file mode 100644
index 0000000..c82d3dc
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/NumberOperator.java
@@ -0,0 +1,37 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum NumberOperator {
+ UNKNOW(""),
+ EQUALS("="),
+ NOT_EQUALS("!="),
+ GREATER_THAN(">"),
+ GREATER_OR_EQUALS_THAN(">="),
+ LESS_THAN("<"),
+ LESS_OR_EQUALS_THAN("<=");
+
+ private String name = "";
+
+ NumberOperator(String name) {
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Operateur.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Operateur.java
new file mode 100644
index 0000000..d364fac
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Operateur.java
@@ -0,0 +1,79 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum Operateur {
+
+ LIKE("LIKE"),
+ EQUALS("="), NOT_EQUALS("<>"),
+ GREATER_THAN(">"), GREATER_OR_EQUALS_THAN(">="),
+ LOWER_THAN("<"), LOWER_OR_EQUALS_THAN("<="),
+ IN("IN"), NOT_IN("NOT IN"),
+ IS_NULL("IS NULL"), IS_NOT_NULL("IS NOT NULL"),
+ BETWEEN("BETWEEN"), NOT_BETWEEN("NOT BETWEEN");
+
+ private final String value;
+
+ private Operateur(String value) {
+ this.value = value;
+ }
+
+ public static Operateur fromValeur(String value) {
+ String cleanValue = value.trim().toUpperCase();
+ cleanValue = cleanValue.replaceAll("\\s+", " ");//remplacer plusieurs chaines vides par une seule chaine vide
+
+ switch (cleanValue) {
+
+ case "LIKE":
+ return Operateur.LIKE;
+
+ case "=":
+ return Operateur.EQUALS;
+
+ case "<>":
+ return Operateur.NOT_EQUALS;
+
+ case ">":
+ return Operateur.GREATER_THAN;
+
+ case ">=":
+ return Operateur.GREATER_OR_EQUALS_THAN;
+
+ case "<":
+ return Operateur.LOWER_THAN;
+
+ case "<=":
+ return Operateur.LOWER_OR_EQUALS_THAN;
+
+ case "IN":
+ return Operateur.IN;
+
+ case "NOT IN":
+ return Operateur.NOT_IN;
+
+ case "IS NULL":
+ return Operateur.IS_NULL;
+
+ case "IS NOT NULL":
+ return Operateur.IS_NOT_NULL;
+
+ case "BETWEEN":
+ return Operateur.BETWEEN;
+
+ case "NOT BETWEEN":
+ return Operateur.NOT_BETWEEN;
+
+ default:
+ return null;
+ }
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/OrderByType.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/OrderByType.java
new file mode 100644
index 0000000..18c1bb7
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/OrderByType.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum OrderByType {
+ ASC, DESC;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/RemoteTypeAction.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/RemoteTypeAction.java
new file mode 100644
index 0000000..8cfbb28
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/RemoteTypeAction.java
@@ -0,0 +1,49 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum RemoteTypeAction {
+ AJOUTER("AJOUTER"),
+ CONSULTER("CONSULTER"),
+ SUPPRIMER("SUPPRIMER");
+
+ private final String name;
+
+ private RemoteTypeAction(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ @EnumValue
+ public static TypeOperation fromValeur(String value) {
+ if (value == null) {
+ return null;
+ }
+ if (value.equalsIgnoreCase("ajouter")) {
+ return TypeOperation.AJOUTER;
+ } else if (value.equalsIgnoreCase("consulter")) {
+ return TypeOperation.CONSULTER;
+ } else {
+ return null;
+
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/SearchAnnotationOperateur.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/SearchAnnotationOperateur.java
new file mode 100644
index 0000000..3800191
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/SearchAnnotationOperateur.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum SearchAnnotationOperateur {
+ EQUALS,
+ NOT_EQUALS,
+ LIKE,
+ LEFT_LIKE,
+ RIGHT_LIKE,
+ GREATER_THAN,
+ GREATER_OR_EQUALS_THAN,
+ LESS_THAN,
+ LESS_OR_EQUALS_THAN,
+ IN,
+ NUMBER_OPERATOR;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Sexe.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Sexe.java
new file mode 100644
index 0000000..52d8812
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/Sexe.java
@@ -0,0 +1,37 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum Sexe {
+
+ FEMME("FEMME"),
+ HOMME("HOMME");
+
+ private String name;
+
+ private Sexe(String name) {
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public static Sexe fromValeur(String value) {
+ switch (value) {
+ case "FEMME":
+ return Sexe.FEMME;
+ case "HOMME":
+ return Sexe.HOMME;
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutDataProduction.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutDataProduction.java
new file mode 100644
index 0000000..7149ab0
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutDataProduction.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum StatutDataProduction {
+ A_CONSOMMER, CONSOMME, ENCOURS_DE_PRODUCTION, ENCOURS_DE_CONSOMMATION;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutReferentiel.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutReferentiel.java
new file mode 100644
index 0000000..1eeb90c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/StatutReferentiel.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum StatutReferentiel {
+ ARCHIVE("ARCHIVE"),
+ EN_PREPARATION("EN PREPARATION"),
+ EN_COURS("EN COURS");
+
+ private final String value;
+
+ private StatutReferentiel(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @EnumValue
+ public static StatutReferentiel fromValeur(String value) {
+ switch (value) {
+ case "ARCHIVE":
+ return StatutReferentiel.ARCHIVE;
+ case "EN PREPARATION":
+ return StatutReferentiel.EN_PREPARATION;
+ case "EN COURS":
+ return StatutReferentiel.EN_COURS;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeActionSysteme.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeActionSysteme.java
new file mode 100644
index 0000000..aae6240
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeActionSysteme.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author lenovo
+ */
+public enum TypeActionSysteme {
+
+ DECONNEXION("DECONNEXION"),
+ INFORMATION("INFORMATION"),
+ AUCUNE("AUCUNE");
+
+ private String name = "";
+
+ //Constructeur
+ TypeActionSysteme(String name) {
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public static TypeActionSysteme fromValeur(String value) {
+ switch (value) {
+ case "DECONNEXION":
+ return TypeActionSysteme.DECONNEXION;
+ case "INFORMATION":
+ return TypeActionSysteme.INFORMATION;
+ case "AUCUNE":
+ return TypeActionSysteme.AUCUNE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeDonnee.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeDonnee.java
new file mode 100644
index 0000000..b6be8e3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeDonnee.java
@@ -0,0 +1,61 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public enum TypeDonnee {
+ ALPHANUMERIQUE("ALPHANUMERIQUE"),
+ NUMERIQUE("NUMERIQUE"),
+ DECIMAL("DECIMAL"),
+ DATE("DATE"),
+ ENUM("ENUMERATION"),
+ OBJET("OBJET");
+
+ private final String value;
+
+ private TypeDonnee(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ public static TypeDonnee fromValeur(String value) {
+ if (value != null) {
+ if (value.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+ return TypeDonnee.ALPHANUMERIQUE;
+
+ } else if (value.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+ return TypeDonnee.NUMERIQUE;
+
+ } else if (value.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ return TypeDonnee.DATE;
+
+ } else if (value.equalsIgnoreCase(TypeDonnee.DECIMAL.getValue())) {
+ return TypeDonnee.DECIMAL;
+
+ } else if (value.equalsIgnoreCase(TypeDonnee.ENUM.getValue())) {
+ return TypeDonnee.ENUM;
+
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeExtension.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeExtension.java
new file mode 100644
index 0000000..0508f35
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeExtension.java
@@ -0,0 +1,43 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum TypeExtension {
+
+ TEXTE("TEXTE"),
+ CSV("CSV"),
+ AUTRES("AUTRES");
+
+ private final String value;
+
+ private TypeExtension(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @EnumValue
+ public static TypeExtension fromValeur(String value) {
+ switch (value) {
+ case "TEXTE":
+ return TypeExtension.TEXTE;
+ case "CSV":
+ return TypeExtension.CSV;
+ case "AUTRES":
+ return TypeExtension.AUTRES;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeIdMessageSysteme.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeIdMessageSysteme.java
new file mode 100644
index 0000000..7213d1d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeIdMessageSysteme.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author lenovo
+ */
+public enum TypeIdMessageSysteme {
+
+ ALERTE_MOT_DE_PASSE_EXPIRE("ALERTE MOT DE PASSE EXPIRE"),
+ MOT_DE_PASSE_EXPIRE("MOT DE PASSE EXPIRE"),
+ MODIFICATION_GROUPE_UTILISATEUR("MODIFICATION GROUPE UTILISATEUR"),
+ MODIFICATION_INFORMATION_UTILISATEUR("MODIFICATION INFORMATION UTILISATEUR"),
+ SUPPRESSION_COMPTE_UTILISATEUR("SUPPRESSION COMPTE UTILISATEUR"),
+ SUPPRESSION_GROUPE_UTILISATEUR("SUPPRESSION GROUPE UTILISATEUR");
+
+ private String name = "";
+
+ //Constructeur
+ TypeIdMessageSysteme(String name) {
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public static TypeIdMessageSysteme fromValeur(String value) {
+ switch (value) {
+ case "ALERTE MOT DE PASSE EXPIRE":
+ return TypeIdMessageSysteme.ALERTE_MOT_DE_PASSE_EXPIRE;
+ case "MOT DE PASSE EXPIRE":
+ return TypeIdMessageSysteme.MOT_DE_PASSE_EXPIRE;
+ case "MODIFICATION GROUPE UTILISATEUR":
+ return TypeIdMessageSysteme.MODIFICATION_GROUPE_UTILISATEUR;
+ case "MODIFICATION INFORMATION UTILISATEUR":
+ return TypeIdMessageSysteme.MODIFICATION_INFORMATION_UTILISATEUR;
+ case "SUPPRESSION COMPTE UTILISATEUR":
+ return TypeIdMessageSysteme.SUPPRESSION_COMPTE_UTILISATEUR;
+ case "SUPPRESSION GROUPE UTILISATEUR":
+ return TypeIdMessageSysteme.SUPPRESSION_GROUPE_UTILISATEUR;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeMessageSysteme.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeMessageSysteme.java
new file mode 100644
index 0000000..62aa85e
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeMessageSysteme.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author lenovo
+ */
+public enum TypeMessageSysteme {
+
+ INFO("INFO"),
+ AVERTISSEMENT("AVERTISSEMENT"),
+ ERREUR("ERREUR");
+
+ private String name = "";
+
+ //Constructeur
+ TypeMessageSysteme(String name) {
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ public static TypeMessageSysteme fromValeur(String value) {
+ switch (value) {
+ case "INFO":
+ return TypeMessageSysteme.INFO;
+ case "AVERTISSEMENT":
+ return TypeMessageSysteme.AVERTISSEMENT;
+ case "ERREUR":
+ return TypeMessageSysteme.ERREUR;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeOperation.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeOperation.java
new file mode 100644
index 0000000..609d062
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeOperation.java
@@ -0,0 +1,52 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+public enum TypeOperation {
+
+ AJOUTER("ajouter"),
+ SUPPRIMER("supprimer"),
+ MODIFIER("modifier"),
+ CONSULTER("consulter");
+
+ private final String name;
+
+ private TypeOperation(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ @EnumValue
+ public static TypeOperation fromValeur(String value) {
+ if (value == null) {
+ return null;
+ }
+ if (value.equalsIgnoreCase("ajouter")) {
+ return TypeOperation.AJOUTER;
+ } else if (value.equalsIgnoreCase("supprimer")) {
+ return TypeOperation.SUPPRIMER;
+ } else if (value.equalsIgnoreCase("modifier")) {
+ return TypeOperation.MODIFIER;
+ } else if (value.equalsIgnoreCase("consulter")) {
+ return TypeOperation.CONSULTER;
+ } else {
+ return null;
+
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeStatut.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeStatut.java
new file mode 100644
index 0000000..7bd83a6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/enumeration/TypeStatut.java
@@ -0,0 +1,37 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.model.enumeration;
+
+/**
+ *
+ * @author bissey
+ */
+public enum TypeStatut {
+ ACTIF("ACTIF"),
+ INNACTIF("INNACTIF");
+
+ private String etat;
+
+ private TypeStatut(String etat) {
+ this.etat = etat;
+ }
+
+ public String getEtat() {
+ return etat;
+ }
+
+ public static TypeStatut fromValeur(String value) {
+ switch (value) {
+ case "ACTIF":
+ return TypeStatut.ACTIF;
+ case "INNACTIF":
+ return TypeStatut.INNACTIF;
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinition.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinition.java
new file mode 100644
index 0000000..d120680
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinition.java
@@ -0,0 +1,71 @@
+package com.megatim.fdxcommons.model.integration;
+
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Transient;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@NoArgsConstructor
+@Getter
+@Setter
+@IdClass(ColumnDefinitionId.class)
+public class ColumnDefinition implements Serializable {
+
+ @Id
+ private String codeTypeFichier;
+
+ @Id
+ private String referentielVersion;
+
+ @Id
+ private String name;
+
+ private String typeDonnee;
+
+ private int taille;
+
+ private int taillePartieDecimale;
+
+ private String formatDate;
+
+ private int position;
+
+ @Transient
+ private boolean required;
+
+ @Transient
+ private boolean collection;
+
+ public ColumnDefinition(String codeTypeFichier, String referentielVersion, String name, String typeDonnee, int taille, int taillePartieDecimale, String formatDate, int position) {
+ this.codeTypeFichier = codeTypeFichier;
+ this.referentielVersion = referentielVersion;
+ this.name = name;
+ this.typeDonnee = typeDonnee;
+ this.taille = taille;
+ this.taillePartieDecimale = taillePartieDecimale;
+ this.formatDate = formatDate;
+ this.position = position;
+ }
+
+ public ColumnDefinition(String name, String typeDonnee, int taille, boolean required, boolean collection) {
+ this.name = name;
+ this.typeDonnee = typeDonnee;
+ this.taille = taille;
+ this.required = required;
+ this.collection = collection;
+ }
+
+ @Override
+ public String toString() {
+ return "ColumnDefinition{" + "codeTypeFichier=" + codeTypeFichier + ", referentielVersion=" + referentielVersion + ", name=" + name + ", typeDonnee=" + typeDonnee + '}';
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinitionId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinitionId.java
new file mode 100644
index 0000000..e6394ca
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/ColumnDefinitionId.java
@@ -0,0 +1,26 @@
+/*
+ * 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.fdxcommons.model.integration;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ColumnDefinitionId implements Serializable {
+
+ private String codeTypeFichier;
+
+ private String referentielVersion;
+
+ private String name;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinition.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinition.java
new file mode 100644
index 0000000..4f55b57
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinition.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxcommons.model.integration;
+
+import com.megatim.fdxcommons.model.integration.enums.FileExtension;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.Transient;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author lenovo
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@IdClass(TableDefinitionId.class)
+public class TableDefinition implements Serializable {
+
+ @Id
+ private String referentielVersion;
+ @Id
+ private String codeTypeFichier;
+ private Boolean headerPresent;
+ private String columnDelimiter;
+ private String lineDelimiter;
+
+ @Enumerated(EnumType.STRING)
+ private FileExtension extension;
+
+ @Transient
+ private List<ColumnDefinition> columnDefinitions = new ArrayList<>();
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinitionId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinitionId.java
new file mode 100644
index 0000000..6d74380
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/TableDefinitionId.java
@@ -0,0 +1,24 @@
+/*
+ * 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.fdxcommons.model.integration;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class TableDefinitionId implements Serializable {
+
+ private String codeTypeFichier;
+
+ private String referentielVersion;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/enums/FileExtension.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/enums/FileExtension.java
new file mode 100644
index 0000000..58e650b
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/enums/FileExtension.java
@@ -0,0 +1,28 @@
+/*
+ * 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.fdxcommons.model.integration.enums;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum FileExtension {
+ CSV, TXT, XLS, XLSX;
+
+ public static FileExtension fromValeur(String value) {
+ switch (value.toUpperCase()) {
+ case "CSV":
+ return FileExtension.CSV;
+ case "TXT":
+ return FileExtension.TXT;
+ case "XLS":
+ return FileExtension.XLS;
+ case "XLSX":
+ return FileExtension.XLSX;
+ default:
+ return null;
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/JsonStructure.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/JsonStructure.java
new file mode 100644
index 0000000..a32a3ab
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/JsonStructure.java
@@ -0,0 +1,77 @@
+/*
+ * 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.fdxcommons.model.integration.json;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.*;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class JsonStructure implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_TYPE_FICHIER_JSON", sequenceName = "SEQ_TYPE_FICHIER_JSON", allocationSize = 1, initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TYPE_FICHIER_JSON")
+ @XmlTransient
+ private Long id;
+
+ @NotNull(message = "Le type de données est obligatoire")
+ @Enumerated(EnumType.STRING)
+ @XmlAttribute
+ private TypeDonnee typeDonnee;
+
+ @NotNull(message = "Le nom est obligatoire")
+ @XmlAttribute
+ private String name;
+
+ @Min(value = 1, message = "La taille doit être supérieure à 0")
+ @XmlAttribute
+ private int lengthh;
+
+ @XmlAttribute
+ private boolean required;
+
+ @XmlAttribute
+ private boolean collection;
+
+ @XmlAttribute
+ private String formatDate;
+
+ @XmlAttribute
+ private String codeDelimiteurDate;
+
+ @OneToOne
+ @XmlTransient
+ private TypeFichierJson typeFichierJson;
+
+ @ManyToOne
+ @XmlTransient
+ private JsonStructure parent;
+
+ @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
+ @XmlElement(name = "jsonStructure")
+ private List<JsonStructure> fields = new ArrayList<>();
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/TypeFichierJson.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/TypeFichierJson.java
new file mode 100644
index 0000000..62992dc
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/integration/json/TypeFichierJson.java
@@ -0,0 +1,56 @@
+/*
+ * 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.fdxcommons.model.integration.json;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import java.io.Serializable;
+import javax.persistence.*;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+@XmlRootElement(name = "typeFichierJson")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class TypeFichierJson implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_TYPE_FICHIER",
+ sequenceName = "SEQ_TYPE_FICHIER",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TYPE_FICHIER")
+ @XmlTransient
+ private Long id;
+
+ @OneToOne(cascade = CascadeType.MERGE)
+ @JoinColumn(name = "referentiel_version")
+ private Referentiel referentiel;
+
+ @OneToOne(cascade = CascadeType.MERGE)
+ @JoinColumn(name = "type_fichier_code")
+ private TypeFichier typeFichier;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "json_structure_id")
+ private JsonStructure jsonStructure;
+
+ public TypeFichierJson(TypeFichier typeFichier, JsonStructure jsonStructure) {
+ this.typeFichier = typeFichier;
+ this.jsonStructure = jsonStructure;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ApplicationSourcesToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ApplicationSourcesToExport.java
new file mode 100644
index 0000000..e26ca81
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ApplicationSourcesToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Setter
+@Getter
+@XmlRootElement(name = "sources")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ApplicationSourcesToExport {
+
+ private List<ApplicationSource> applicationSourceList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ExtensionFichiersToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ExtensionFichiersToExport.java
new file mode 100644
index 0000000..a104502
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ExtensionFichiersToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ExtensionFichiersToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ExtensionFichiersToExport {
+
+ private List<ExtensionFichier> extensionFichiers = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeNoeudsToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeNoeudsToExport.java
new file mode 100644
index 0000000..7744cc5
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeNoeudsToExport.java
@@ -0,0 +1,29 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "GroupeNoeudsToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class GroupeNoeudsToExport {
+
+ @XmlElement(name = "groupeNoeuds")
+ private List<GroupeNoeud> groupeNoeuds = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeParticipantsToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeParticipantsToExport.java
new file mode 100644
index 0000000..90cd40b
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/GroupeParticipantsToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "GroupeParticipantsToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class GroupeParticipantsToExport {
+
+ private List<GroupeParticipant> groupeParticipants = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NatureProductionFichiersToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NatureProductionFichiersToExport.java
new file mode 100644
index 0000000..006031e
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NatureProductionFichiersToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "NatureProductionFichiersToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class NatureProductionFichiersToExport {
+
+ private List<NatureProductionFichier> natureProductionFichierList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NoeudsToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NoeudsToExport.java
new file mode 100644
index 0000000..9b49902
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/NoeudsToExport.java
@@ -0,0 +1,28 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "NoeudsToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class NoeudsToExport {
+
+ private List<Noeud> noeuds = new ArrayList<>();
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ParticipantsToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ParticipantsToExport.java
new file mode 100644
index 0000000..f8aa858
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ParticipantsToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ParticipantsToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ParticipantsToExport {
+
+ private List<Participant> participants = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/PaysToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/PaysToExport.java
new file mode 100644
index 0000000..f7f64e5
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/PaysToExport.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "PaysToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PaysToExport {
+
+ private List<Pays> paysList = new ArrayList<>();
+
+ public List<Pays> getPaysList() {
+ return paysList;
+ }
+
+ public void setPaysList(List<Pays> paysList) {
+ this.paysList = paysList;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ReferentielsToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ReferentielsToExport.java
new file mode 100644
index 0000000..590f170
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ReferentielsToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ReferentielsToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ReferentielsToExport {
+
+ private List<Referentiel> referentielList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/RoutagesToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/RoutagesToExport.java
new file mode 100644
index 0000000..6e277f6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/RoutagesToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "RoutagesToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class RoutagesToExport {
+
+ private List<Routage> routageList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/StructureLigneToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/StructureLigneToExport.java
new file mode 100644
index 0000000..04616b9
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/StructureLigneToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "StructureLigneToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class StructureLigneToExport {
+
+ private List<StructureLigne> structureLigneList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/TypeFichiersToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/TypeFichiersToExport.java
new file mode 100644
index 0000000..4390c0a
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/TypeFichiersToExport.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "TypeFichiersToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class TypeFichiersToExport {
+
+ private List<TypeFichier> typeFichiersList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationList.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationList.java
new file mode 100644
index 0000000..eac0f48
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationList.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ValidateurFichierConfigurationList")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ValidateurFichierConfigurationList {
+
+ private List<ValidateurFichierConfiguration> validateurFichierConfigurationList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationToExport.java
new file mode 100644
index 0000000..386488d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierConfigurationToExport.java
@@ -0,0 +1,24 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ValidateurFichierConfigurationToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ValidateurFichierConfigurationToExport {
+
+ private ValidateurFichierConfigurationList validateurFichierConfigurationList;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierToExport.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierToExport.java
new file mode 100644
index 0000000..2810af4
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxb/ValidateurFichierToExport.java
@@ -0,0 +1,29 @@
+/*
+ * 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.fdxcommons.model.jaxb;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@XmlRootElement(name = "ValidateurFichierToExport")
+@XmlAccessorType(XmlAccessType.FIELD)
+@Setter
+@Getter
+public class ValidateurFichierToExport {
+
+ @XmlElement(name = "ValidateurFichier")
+ private List<ValidateurFichier> validateurFichierList = new ArrayList<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxbentity/adapter/LocalDateAdapter.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxbentity/adapter/LocalDateAdapter.java
new file mode 100644
index 0000000..30b9401
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jaxbentity/adapter/LocalDateAdapter.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.jaxbentity.adapter;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ *
+ * @author ASUS
+ */
+public class LocalDateAdapter extends XmlAdapter<String, LocalDate> {
+
+ @Override
+ public LocalDate unmarshal(String v) throws Exception {
+ return LocalDate.parse(v);
+ }
+
+ @Override
+ public String marshal(LocalDate v) throws Exception {
+ return v.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ActivationApiUserMessage.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ActivationApiUserMessage.java
new file mode 100644
index 0000000..10824be
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ActivationApiUserMessage.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxcommons.model.jms.messages;
+
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ActivationApiUserMessage implements Serializable {
+ private String codeParticipant;
+ private boolean activate;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessage.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessage.java
new file mode 100644
index 0000000..345e368
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessage.java
@@ -0,0 +1,15 @@
+package com.megatim.fdxcommons.model.jms.messages;
+
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Data
+public class ApiTokenMessage implements Serializable {
+ private String codeParticipant;
+ private String token;
+ private ApiTokenMessageType apiTokenMessageType;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessageType.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessageType.java
new file mode 100644
index 0000000..29c6cd2
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/jms/messages/ApiTokenMessageType.java
@@ -0,0 +1,9 @@
+package com.megatim.fdxcommons.model.jms.messages;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public enum ApiTokenMessageType {
+ ADD, UPDATE, LOCKED, UNLOCKED;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/ContainerContextDto.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/ContainerContextDto.java
new file mode 100644
index 0000000..c49dab3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/ContainerContextDto.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.model.log;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class ContainerContextDto {
+
+ private ContainerRequestContext containerRequestContext;
+
+ private ContainerResponseContext containerResponseContext;
+
+ private SecurityContext securityContext;
+
+ private HttpServletRequest httpServletRequest;
+
+ private UriInfo uriInfo;
+
+ private ResourceInfo resourceInfo;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/UserActionLog.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/UserActionLog.java
new file mode 100644
index 0000000..eda1b4a
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/log/UserActionLog.java
@@ -0,0 +1,63 @@
+package com.megatim.fdxcommons.model.log;
+
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+public class UserActionLog implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_USER_ACTION_LOGS",
+ sequenceName = "SEQ_USER_ACTION_LOGS",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_USER_ACTION_LOGS")
+ private Long id;
+
+ @NotEmpty(message = "La description est obligatoire")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ @Lob
+ private String message;
+
+ @CriteriaEntitySearch(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ //@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @NotNull(message = "La date de l'action est obligatoire")
+ @CriteriaEntitySearch(libelle = "Date et heure", rang = 1)
+ private LocalDateTime dateAction;
+
+ @CriteriaEntitySearch(libelle = "Adresse IP", rang = 4)
+ @NotEmpty(message = "L'addresse IP est obligatoire")
+ private String ipAddress;
+
+ @CriteriaEntitySearch(libelle = "Statut requete", visible = false)
+ private Integer status;
+
+ @CriteriaEntitySearch(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ @CriteriaEntitySearch(libelle = "Path", visible = false)
+ private String relativePath;
+
+ private String httpMethod;
+
+ private String motif;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/mappers/MapStructMapper.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/mappers/MapStructMapper.java
new file mode 100644
index 0000000..e4416a8
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/mappers/MapStructMapper.java
@@ -0,0 +1,185 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.model.mappers;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxcommons.model.dtos.dataproduction.CommonDataProductionDto;
+import com.megatim.fdxcommons.model.dtos.dataproduction.ProductionMetaDataDto;
+import com.megatim.fdxcommons.model.dtos.integration.ColumnDefinitionDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ExtensionFichierDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ExtensionFichierSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeNoeudDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeNoeudSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeParticipantDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeParticipantSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.NoeudDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.NoeudSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.PaysDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.PaysSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.RoutageDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.RoutageSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierConfigurationDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierConfigurationSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierSlimDto;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+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.referentiel.ExtensionFichier;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import java.util.List;
+import org.mapstruct.InjectionStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.ValueMapping;
+
+/**
+ *
+ * @author ASUS
+ */
+@Mapper(componentModel = "cdi", injectionStrategy = InjectionStrategy.FIELD)
+public interface MapStructMapper {
+
+ ExtensionFichierDto extensionFichierToExtensionFichierDto(ExtensionFichier extensionFichier);
+
+ ExtensionFichierSlimDto extensionFichierToExtensionFichierSlimDto(ExtensionFichier extensionFichier);
+
+ List<ExtensionFichierDto> extensionFichierListToExtensionFichierDtoList(List<ExtensionFichier> extensionFichiers);
+
+ GroupeNoeudDto groupeNoeudToGroupeNoeudDto(GroupeNoeud groupeNoeud);
+
+ GroupeNoeudSlimDto groupeNoeudToGroupeNoeudSlimDto(GroupeNoeud groupeNoeud);
+
+ List<GroupeNoeudDto> groupeNoeudListToGroupeNoeudDtoList(List<GroupeNoeud> groupeNoeuds);
+
+ GroupeParticipantDto groupeParticipantToGroupeParticipantDto(GroupeParticipant groupeParticipant);
+
+ GroupeParticipantSlimDto groupeParticipantToGroupeParticipantSlimDto(GroupeParticipant groupeParticipant);
+
+ List<GroupeParticipantDto> groupeParticipantListToGroupeParticipantDtoList(List<GroupeParticipant> groupeParticipants);
+
+ NoeudDto noeudToNoeudDto(Noeud noeud);
+
+ List<NoeudDto> noeudListToNoeudDtoList(List<Noeud> noeuds);
+
+ NoeudSlimDto noeudToNoeudSlimDto(Noeud noeud);
+
+ ParticipantDto participantToPartcipantDto(Participant participant);
+
+ List<ParticipantDto> participantListToParticipantDtoList(List<Participant> participants);
+
+ ParticipantSlimDto participantToParticipantSlimDto(Participant participant);
+
+ List<ParticipantSlimDto> participantListToPartcipantSlimDtoList(List<Participant> participants);
+
+ PaysDto paysToPaysDto(Pays pays);
+
+ List<PaysDto> paysListToPaysDtoList(List<Pays> pays);
+
+ PaysSlimDto paysToPaysSlimDto(Pays pays);
+
+ List<PaysSlimDto> paysListToPaysSlimDtoList(List<Pays> pays);
+
+ ReferentielDto referentielToReferentielDto(Referentiel referentiel);
+
+ ReferentielSlimDto referentielToReferentielSlimDto(Referentiel referentiel);
+
+ List<ReferentielDto> referentielListToReferentielDtoList(List<Referentiel> referentiels);
+
+ RoutageDto routageToRoutageDto(Routage routage);
+
+ RoutageSlimDto routageToRoutageSlimDto(Routage routage);
+
+ List<RoutageDto> routageListToRoutageDtoList(List<Routage> routages);
+
+ TypeFichierDto typeFichierToTypeFichierDto(TypeFichier typeFichier);
+
+ TypeFichierSlimDto typeFichierToTypeFichierSlimDto(TypeFichier typeFichier);
+
+ TypeFichier typeFichierSlimDtoToTypeFichier(TypeFichierSlimDto typeFichier);
+
+ List<TypeFichierDto> typeFichierListToTypeFichierDtoList(List<TypeFichier> typeFichiers);
+
+ ValidateurFichierConfigurationDto validateurFichierConfigurationToValidateurFichierConfigurationDto(ValidateurFichierConfiguration validateurFichierConfiguration);
+
+ ValidateurFichierConfigurationSlimDto validateurFichierConfigurationToValidateurFichierConfigurationSlimDto(ValidateurFichierConfiguration validateurFichierConfiguration);
+
+ List<ValidateurFichierConfigurationDto> validateurFichierConfigurationListToValidateurFichierConfigurationDtoList(List<ValidateurFichierConfiguration> validateurFichierConfigurations);
+
+ ValidateurFichierDto validateurFichierToValidateurFichierDto(ValidateurFichier validateurFichier);
+
+ ValidateurFichierSlimDto validateurFichierToValidateurFichierSlimDto(ValidateurFichier validateurFichier);
+
+ List<ValidateurFichierDto> validateurFichierListToValidateurFichierDtoList(List<ValidateurFichier> validateurFichiers);
+
+ @ValueMapping(target = MappingConstants.NULL, source = MappingConstants.ANY_UNMAPPED)
+ @ValueMapping(target = "NUMERIQUE", source = "NUMERIQUE")
+ @ValueMapping(target = "ALPHANUMERIQUE", source = "ALPHANUMERIQUE")
+ @ValueMapping(target = "DATE", source = "DATE")
+ @ValueMapping(target = "DECIMAL", source = "DECIMAL")
+ TypeDonnee stringToTypeDonnee(String typeDonnee);
+
+ String typeOperationToString(TypeOperation typeOperation);
+
+ ColumnDefinitionDto columnDefinitionToColumnDefinitionDto(ColumnDefinition columnDefinitionDto);
+
+ List<ColumnDefinitionDto> columnDefinitionListToColumnDefinitionDtoList(List<ColumnDefinition> data);
+
+ default CriteriaEntity criteriaEntityFromViewToCriteriaEntity(CriteriaEntityFromView ce) {
+ if (ce == null
+ || (ce.getSubCriterias() == null || ce.getSubCriterias().isEmpty()
+ && (ce.getNomColonne() == null || ce.getNomColonne().isEmpty()
+ || ce.getOperateur() == null || ce.getOperateur() == null))) {
+ return null;
+ } else {
+ if (ce.getSubCriterias() != null && !ce.getSubCriterias().isEmpty()) {
+ CriteriaEntity finalCriterion = new CriteriaEntity();
+ finalCriterion.setCriteriaLogicConnector(ce.getCriteriaLogicConnector());
+
+ for (CriteriaEntityFromView cev : ce.getSubCriterias()) {
+ CriteriaEntity criteriaEntity = criteriaEntityFromViewToCriteriaEntity(cev);
+ if (criteriaEntity != null) {
+ finalCriterion.getSubCriterias().add(criteriaEntity);
+ }
+ }
+ return finalCriterion;
+ } else {
+ return new CriteriaEntity(ce.getNomColonne(), ce.getCriteriaValue(), ce.getOperateur(), ce.isEndOfTheDay());
+ }
+ }
+ }
+
+ List<CriteriaEntity> criteriaEntityFromViewListToCriteriaEntityList(List<CriteriaEntityFromView> ces);
+
+ String dataProductionSourceToString(DataProductionSource source);
+
+ CriteriaEntityFromView criteriaEntityToCriteriaEntityFromView(CriteriaEntity ce);
+
+ ProductionMetaDataDto productionMetaDataToProductionMetaDataDto(ProductionMetaData metatData);
+
+ CommonDataProductionDto commonDataProductionToCommonDataProductionDto(CommonDataProduction cd);
+
+ ProductionMetaData productionMetaDataDtoToProductionMetaData(ProductionMetaDataDto dto);
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/BetweenOperatorValues.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/BetweenOperatorValues.java
new file mode 100644
index 0000000..ed042d6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/BetweenOperatorValues.java
@@ -0,0 +1,39 @@
+package com.megatim.fdxcommons.model.pojo;
+
+/**
+ * POJO à utiliser pour stocker les bornes de l'opérateur BETWEEN
+ *
+ * @author ASUS
+ */
+public class BetweenOperatorValues {
+
+ private Object lowerBound;
+ private Object upperBound;
+
+ public BetweenOperatorValues(Object lowerBound, Object upperBound) {
+ this.lowerBound = lowerBound;
+ this.upperBound = upperBound;
+
+ }
+
+ public Object getUpperBound() {
+ return upperBound;
+ }
+
+ public void setUpperBound(Object upperBound) {
+ this.upperBound = upperBound;
+ }
+
+ public Object getLowerBound() {
+ return lowerBound;
+ }
+
+ public void setLowerBound(Object lowerBound) {
+ this.lowerBound = lowerBound;
+ }
+
+ @Override
+ public String toString() {
+ return '{' + "lowerBound=" + lowerBound + ", upperBound=" + upperBound + '}';
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/Constantes.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/Constantes.java
new file mode 100644
index 0000000..59cc59f
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/Constantes.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxcommons.model.pojo;
+
+/**
+ *
+ * @author ASUS
+ */
+public class Constantes {
+ public static final String FIELD_NAME = "field-name";
+ public static final String TAILLE = "taille";
+ public static final String POSITION = "position";
+ public static final String TYPE_DONNEE = "typeDonnee";
+ public static final String TAILLE_PARTIE_DECIMALE = "taillePartieDecimale";
+ public static final String EQUAL_PARAM = "equalParam";
+ public static final String EQUAL_VALUE = "equalValue";
+ public static final String FORMAT_DATE = "formatDate";
+ public static final String SEPARATEUR_DATE = "separateurDate";
+ public static final String ERROR_CODE = "error-code";
+ public static final String HEADER_PRESENT = "header-present";
+ public static final String LINE_DELIMITER = "line-delimiter";
+ public static final String COLUMN_DELIMITER = "column-delimiter";
+ public static final String LIGNE = "ligne";
+ public static final String EXTENSION = "extension";
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntity.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntity.java
new file mode 100644
index 0000000..aec1aa3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntity.java
@@ -0,0 +1,97 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Entité permettant de construire un critère de recherche
+ *
+ * @author ASUS
+ */
+public class CriteriaEntity {
+
+ //nom de la colonne
+ private String nomColonne;
+
+ //Valeur de comparaison lors de le recherche
+ private Object criteriaValue;
+
+ //Operateur de recherche
+ private Operateur operateur;
+
+ private boolean endOfTheDay = false;
+
+ private CriteriaLogicConnector criteriaLogicConnector;
+
+ private List<CriteriaEntity> subCriterias = new ArrayList<>();
+
+ public CriteriaEntity() {
+ }
+
+ public CriteriaEntity(String nomColonne, Object criteriaValue, Operateur operateur) {
+ this(nomColonne, criteriaValue, operateur, false);
+ }
+
+ public CriteriaEntity(String nomColonne, Object criteriaValue, Operateur operateur, boolean endOfTheDay) {
+ this.nomColonne = nomColonne;
+ this.criteriaValue = criteriaValue;
+ this.operateur = operateur;
+ this.endOfTheDay = endOfTheDay;
+ }
+
+ public CriteriaEntity(String nomColonne, Operateur operateur) {
+ this.nomColonne = nomColonne;
+ this.operateur = operateur;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public void setNomColonne(String nomColonne) {
+ this.nomColonne = nomColonne;
+ }
+
+ public Object getCriteriaValue() {
+ return criteriaValue;
+ }
+
+ public void setCriteriaValue(Object criteriaValue) {
+ this.criteriaValue = criteriaValue;
+ }
+
+ public Operateur getOperateur() {
+ return operateur;
+ }
+
+ public void setOperateur(Operateur operateur) {
+ this.operateur = operateur;
+ }
+
+ public boolean isEndOfTheDay() {
+ return endOfTheDay;
+ }
+
+ public void setEndOfTheDay(boolean endOfTheDay) {
+ this.endOfTheDay = endOfTheDay;
+ }
+
+ public List<CriteriaEntity> getSubCriterias() {
+ return subCriterias;
+ }
+
+ public void setSubCriterias(List<CriteriaEntity> subCriterias) {
+ this.subCriterias = subCriterias;
+ }
+
+ public CriteriaLogicConnector getCriteriaLogicConnector() {
+ return criteriaLogicConnector;
+ }
+
+ public void setCriteriaLogicConnector(CriteriaLogicConnector criteriaLogicConnector) {
+ this.criteriaLogicConnector = criteriaLogicConnector;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntityFromView.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntityFromView.java
new file mode 100644
index 0000000..9a9da8d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaEntityFromView.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * POJO permettant de contenir les critères de recherche provenant directement
+ * de la vue
+ *
+ * @author ASUS
+ */
+@ApiModel(description = "Structure représentant le critère de sélection des lignes pour un type de fichier")
+@Getter
+@Setter
+public class CriteriaEntityFromView {
+
+ //nom de la colonne
+ @ApiModelProperty(value = "nom d'une colonne du type de fichier", required = true)
+ private String nomColonne;
+
+ @ApiModelProperty(value = "valeur du critère sur la colonne", required = true)
+ private Object criteriaValue;
+
+ @ApiModelProperty(value = "opérateur logique", required = true, allowableValues = "IN,NOT IN,IS NULL,IS NOT NULL,BETWEEN,NOT BETWEEN,LIKE,...")
+ private Operateur operateur;
+
+ private boolean endOfTheDay = false;
+
+ private CriteriaLogicConnector criteriaLogicConnector;
+
+ private List<CriteriaEntityFromView> subCriterias = new ArrayList<>();
+
+ public CriteriaEntityFromView() {
+
+ }
+
+ public CriteriaEntityFromView(String nomColonne, Object criteriaValue, Operateur operateur) {
+ this.nomColonne = nomColonne;
+ this.criteriaValue = criteriaValue;
+ this.operateur = operateur;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaFormRequest.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaFormRequest.java
new file mode 100644
index 0000000..72179d6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/CriteriaFormRequest.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxcommons.model.pojo;
+
+/**
+ *
+ * @author lenovo
+ */
+public class CriteriaFormRequest {
+
+ private CriteriaEntityFromView criteria;
+
+ public CriteriaFormRequest() {}
+
+ public CriteriaFormRequest(CriteriaEntityFromView criteria) {
+ this.criteria = criteria;
+ }
+
+ public CriteriaEntityFromView getCriteria() {
+ return criteria;
+ }
+
+ public void setCriteria(CriteriaEntityFromView criteria) {
+ this.criteria = criteria;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/DataInMemory.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/DataInMemory.java
new file mode 100644
index 0000000..98c1311
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/DataInMemory.java
@@ -0,0 +1,38 @@
+/*
+ * 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.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class DataInMemory {
+
+ private Referentiel referentielEnCours;
+
+ private Map<String, TypeFichier> codeTypeFichierToTypeFichiers = new HashMap<>();
+
+ private Map<String, Map<String, ColumnDefinition>> typeFichierToColumnDefinitions = new HashMap<>();
+
+ private Map<String, NatureProductionFichier> typeFichierToNatureProductionsFichiers = new HashMap<>();
+
+ private Map<String, Set<String>> typeFichierToParticipantsEnvoi = new HashMap<>();
+
+ private Map<String, Set<String>> typeFichierToParticipantsReception = new HashMap<>();
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonColumnDefinition.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonColumnDefinition.java
new file mode 100644
index 0000000..3931d01
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonColumnDefinition.java
@@ -0,0 +1,46 @@
+/*
+ * 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.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.util.HashMap;
+import java.util.Map;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class JsonColumnDefinition {
+
+ private final TypeDonnee typeDonnee;
+
+ private final String name;
+
+ private final int lengthh;
+
+ private final boolean required;
+
+ private final boolean collection;
+
+ private String formatDate;
+
+ private String codeDelimiteurDate;
+
+ private final Map<String,JsonColumnDefinition> columnNameToColumnDefinition = new HashMap<>();
+
+ public JsonColumnDefinition(TypeDonnee typeDonnee, String name, int lengthh, String formatDate, boolean required, boolean collection) {
+ this.typeDonnee = typeDonnee;
+ this.name = name;
+ this.lengthh = lengthh;
+ this.required = required;
+ this.collection = collection;
+ this.formatDate = formatDate;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonTableDefinition.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonTableDefinition.java
new file mode 100644
index 0000000..c420fe6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/JsonTableDefinition.java
@@ -0,0 +1,59 @@
+/*
+ * 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.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonTableDefinition {
+
+ private final String tableName;
+ private final String parentTableName;
+ /**
+<<<<<<< HEAD
+ * Nom du champ au niveau du parent qui contenir la donnée si champ encours de definition est une liste ou un objet.
+ * Utilisé uniquement pour faciliter l'extraction des données
+=======
+ * Nom du champ au niveau du parent qui contenir la donnée si champ encours
+ * de definition est une liste ou un objet. Utilisé uniquement pour
+ * faciliter l'extraction des données
+>>>>>>> 5b75241178fbfc33b6de4290c8bdad4b7cbbf3b8
+ */
+ private final String parentFieldName;
+ private final List<ColumnDefinition> columnDefs;
+ private final List<JsonTableDefinition> tablesDefinition = new ArrayList<>();
+
+ public JsonTableDefinition(String tableName, List<ColumnDefinition> columnDefs, String parentTableName, String parentFieldName) {
+ this.tableName = tableName;
+ this.columnDefs = columnDefs;
+ this.parentTableName = parentTableName;
+ this.parentFieldName = parentFieldName;
+ }
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public List<ColumnDefinition> getColumnDefs() {
+ return columnDefs;
+ }
+
+ public List<JsonTableDefinition> getTablesDefinition() {
+ return tablesDefinition;
+ }
+
+ public String getParentTableName() {
+ return parentTableName;
+ }
+
+ public String getParentFieldName() {
+ return parentFieldName;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/OrderByDefinition.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/OrderByDefinition.java
new file mode 100644
index 0000000..ed00db3
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/OrderByDefinition.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class OrderByDefinition {
+
+ private String fieldName;
+
+ private OrderByType orderByType = OrderByType.ASC;
+
+ public OrderByDefinition(String fieldName, OrderByType orderByType) {
+ this.fieldName = fieldName;
+ this.orderByType = orderByType;
+ }
+
+ public OrderByDefinition(String fieldName) {
+ this.fieldName = fieldName;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/PageData.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/PageData.java
new file mode 100644
index 0000000..0cade5c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/PageData.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import java.util.List;
+import java.util.Map;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class PageData {
+
+ private List<Map<String, Object>> loadedData;
+
+ private int pageNumber;
+
+ private int pageSize;
+
+ private long totalNumberOfElements;
+
+ private String token;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameter.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameter.java
new file mode 100644
index 0000000..6b884f8
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameter.java
@@ -0,0 +1,68 @@
+package com.megatim.fdxcommons.model.pojo;
+
+/**
+ * Entité utilisée pour la construction des paramètres des requêtes préparées
+ *
+ * @author ASUS
+ */
+public class QueryParameter {
+
+ private int index; // index du paramètre dans la requête
+
+ private String nomColonne; // nom de la colonne
+
+ private Object parameterValue; // Nouvelle valeur à mettre en BD
+
+ private String value;
+
+ public QueryParameter() {
+ }
+
+ public QueryParameter(int index, String nomColonne) {
+ this.index = index;
+ this.nomColonne = nomColonne;
+ }
+
+ public QueryParameter(String nomColonne, Object parameterValue) {
+ this.nomColonne = nomColonne;
+ this.parameterValue = parameterValue;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public void setNomColonne(String nomColonne) {
+ this.nomColonne = nomColonne;
+ }
+
+ public Object getParameterValue() {
+ return parameterValue;
+ }
+
+ public void setParameterValue(Object parameterValue) {
+ this.parameterValue = parameterValue;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return "QueryParameter{" + "index=" + index + ", nomColonne=" + nomColonne + ", parameterValue=" + parameterValue + ", value=" + value + '}';
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameterFromView.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameterFromView.java
new file mode 100644
index 0000000..ede2c51
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/QueryParameterFromView.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * POJO permettant de contenir les valeurs(provenant directement de la vue) à
+ * mettre à jour en BD
+ *
+ * @author ASUS
+ */
+@ApiModel(description="Structure représentant la valeur de mise à jour d'une colonne pour un type de fichier")
+public class QueryParameterFromView {
+
+ @ApiModelProperty(value = "nom d'une colonne du type de fichier", required = true)
+ private String nomColonne; // nom de la colonne
+
+ @ApiModelProperty(value = "valeur à mettre à jour pour la colonne sélectionnée", required = true)
+ private String parameterValue;
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public void setNomColonne(String nomColonne) {
+ this.nomColonne = nomColonne;
+ }
+
+ public String getParameterValue() {
+ return parameterValue;
+ }
+
+ public void setParameterValue(String parameterValue) {
+ this.parameterValue = parameterValue;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/ReferentielToImportData.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/ReferentielToImportData.java
new file mode 100644
index 0000000..80c1a9b
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/ReferentielToImportData.java
@@ -0,0 +1,69 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.integration.json.TypeFichierJson;
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ReferentielToImportData implements Serializable {
+
+ private List<ApplicationSource> applicationSources = new ArrayList<>();
+
+ private List<ExtensionFichier> extensionFichiers = new ArrayList<>();
+
+ private List<GroupeNoeud> groupeNoeuds = new ArrayList<>();
+
+ private List<GroupeParticipant> groupeParticipants = new ArrayList<>();
+
+ private List<Noeud> noeuds = new ArrayList<>();
+
+ private List<Participant> participants = new ArrayList<>();
+
+ private List<Pays> pays = new ArrayList<>();
+
+ private List<Referentiel> referentiels = new ArrayList<>();
+
+ private List<Routage> routages = new ArrayList<>();
+
+ private List<StructureLigne> structureLignes = new ArrayList<>();
+
+ private List<TypeFichier> typeFichiers = new ArrayList<>();
+
+ private List<ValidateurFichierConfiguration> validateurFichierConfigurations = new ArrayList<>();
+
+ private List<ValidateurFichier> validateurFichiers = new ArrayList<>();
+
+ private List<TableDefinition> tableDefinitions = new ArrayList<>();
+
+ private List<NatureProductionFichier> natureProductionFichiers = new ArrayList<>();
+
+ private List<TypeFichierJson> typeFichiersJson = new ArrayList<>();
+
+ private Referentiel referentielEnCours;
+
+ private String fileName;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/SelectResult.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/SelectResult.java
new file mode 100644
index 0000000..39906d7
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/SelectResult.java
@@ -0,0 +1,36 @@
+/*
+ * 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.fdxcommons.model.pojo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SelectResult {
+ private int lastReadIndex = -1;
+
+ List<Map<String, Object>> loadedData = new ArrayList<>();
+
+ public int getLastReadIndex() {
+ return lastReadIndex;
+ }
+
+ public void setLastReadIndex(int lastReadIndex) {
+ this.lastReadIndex = lastReadIndex;
+ }
+
+ public List<Map<String, Object>> getLoadedData() {
+ return loadedData;
+ }
+
+ public void setLoadedData(List<Map<String, Object>> loadedData) {
+ this.loadedData = loadedData;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/UpdateQueryPojo.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/UpdateQueryPojo.java
new file mode 100644
index 0000000..cef8e38
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/pojo/UpdateQueryPojo.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxcommons.model.pojo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class UpdateQueryPojo {
+
+ private CriteriaEntityFromView criterionFromView;
+
+ private CriteriaEntity criterion;
+
+ private List<QueryParameterFromView> parameters = new ArrayList<>();
+
+ public CriteriaEntityFromView getCriterionFromView() {
+ return criterionFromView;
+ }
+
+ public void setCriteriasFromView(CriteriaEntityFromView criterionFromView) {
+ this.criterionFromView = criterionFromView;
+ }
+
+ public CriteriaEntity getCriterion() {
+ return criterion;
+ }
+
+ public void setCriterion(CriteriaEntity criterion) {
+ this.criterion = criterion;
+ }
+
+ public List<QueryParameterFromView> getParameters() {
+ return parameters;
+ }
+
+ public void setParameters(List<QueryParameterFromView> parameters) {
+ this.parameters = parameters;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ApplicationSource.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ApplicationSource.java
new file mode 100644
index 0000000..6310e74
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ApplicationSource.java
@@ -0,0 +1,96 @@
+/*
+ * 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.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ApplicationSource implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Le libellé obligatoire")
+ private String libelle;
+
+ private String description;
+
+ @NotNull(message = "L'application source doit être associée à un réfrérentiel en préparation")
+ @ManyToOne
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @OneToMany(mappedBy = "applicationSource", cascade = CascadeType.ALL)
+ @XmlTransient
+ @JsonIgnore
+ private Set<StructureLigne> structureLignes = new HashSet<>();
+
+ @Override
+ public String toString() {
+ return this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final ApplicationSource other = (ApplicationSource) obj;
+ if (this.getLibelle() != null && !this.getLibelle().equals(other.getLibelle())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 19 * hash + Objects.hashCode(this.libelle);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ExtensionFichier.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ExtensionFichier.java
new file mode 100644
index 0000000..621aca9
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ExtensionFichier.java
@@ -0,0 +1,90 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.TypeExtension;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@XmlRootElement(name = "extensionFichiers")
+@XmlAccessorType(XmlAccessType.FIELD)
+@NoArgsConstructor
+public class ExtensionFichier implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Extension du fichier obligatoire")
+ @CriteriaEntitySearch(libelle = "Extension", rang = 1)
+ private String extension;
+
+ @NotEmpty(message = "Le libellé du fichier est obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le type d'extension du fichier est obligatoire")
+ @CriteriaEntitySearch(libelle = "Type extension", rang = 3)
+ private TypeExtension typeExtension;
+
+ @NotNull(message = "L'extension de fichier doit être associée à un réfrérentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 4)
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public String toString() {
+ return this.getLibelle() + " (" + this.getExtension() + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 53 * hash + Objects.hashCode(this.extension);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof ExtensionFichier)) {
+ return false;
+ }
+ ExtensionFichier other = (ExtensionFichier) obj;
+ if (this.getExtension() != null && !this.getExtension().equals(other.getExtension())) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeNoeud.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeNoeud.java
new file mode 100644
index 0000000..49a73ae
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeNoeud.java
@@ -0,0 +1,114 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@XmlRootElement(name = "groupeNoeuds")
+@XmlAccessorType(XmlAccessType.FIELD)
+@NoArgsConstructor
+public class GroupeNoeud implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Code obligatoire")
+ @CriteriaEntitySearch(libelle = "Code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Libellé obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ @NotNull(message = "Le groupe de noeud doit être associé à un référentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3)
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Size(min = 1, message = "Un noeud au moins doit être sélectionné")
+ @ManyToMany
+ @JoinTable(
+ name = "groupe_noeud_association",
+ joinColumns = @JoinColumn(name = "groupe_id"),
+ inverseJoinColumns = @JoinColumn(name = "noeud_id"))
+ private Set<Noeud> noeuds = new HashSet<>();
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "groupeNoeudsEnvoi")
+ @JsonIgnore
+ private Set<Routage> routageEnvois = new HashSet<>();
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "groupeNoeudsReception")
+ @JsonIgnore
+ private Set<Routage> routageReceptions = new HashSet<>();
+
+ @Override
+ public String toString() {
+ return this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof GroupeNoeud)) {
+ return false;
+ }
+ final GroupeNoeud other = (GroupeNoeud) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 59 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeParticipant.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeParticipant.java
new file mode 100644
index 0000000..61a2273
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/GroupeParticipant.java
@@ -0,0 +1,113 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement(name = "groupeParticipants")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class GroupeParticipant implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Code obligatoire")
+ @CriteriaEntitySearch(libelle = "Code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Libellé obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ @NotNull(message = "Le groupe de participants doit être associé à un référentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3)
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+ @Size(min = 1, message = "Un participant doit au moins être sélectionné")
+ @ManyToMany
+ @JoinTable(
+ name = "grpe_pct_ass",
+ joinColumns = @JoinColumn(name = "groupe_id"),
+ inverseJoinColumns = @JoinColumn(name = "participant_id"))
+ private Set<Participant> participants = new HashSet<>();
+
+ @XmlTransient
+ @JsonIgnore
+ @ManyToMany(mappedBy = "groupeParticipantsEnvoi")
+ private Set<Routage> routageEnvois = new HashSet<>();
+
+ @XmlTransient
+ @JsonIgnore
+ @ManyToMany(mappedBy = "groupeParticipantsReception")
+ private Set<Routage> routageReceptions = new HashSet<>();
+
+ @Override
+ public String toString() {
+ return this.getCode() + " " + this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof GroupeParticipant)) {
+ return false;
+ }
+ final GroupeParticipant other = (GroupeParticipant) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 97 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/LocalDateTimeAdapter.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/LocalDateTimeAdapter.java
new file mode 100644
index 0000000..f3910a7
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/LocalDateTimeAdapter.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.referentiel;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ *
+ * @author ASUS
+ */
+public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
+
+ @Override
+ public LocalDateTime unmarshal(String v) throws Exception {
+ try {
+ return LocalDateTime.parse(v);
+ } catch (Exception ex) {
+ return LocalDateTime.parse(v, DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"));
+ }
+ }
+
+ @Override
+ public String marshal(LocalDateTime v) throws Exception {
+ return v.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Noeud.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Noeud.java
new file mode 100644
index 0000000..b0f3f2b
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Noeud.java
@@ -0,0 +1,111 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement(name = "noeuds")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Noeud implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Code obligatoire")
+ @Size(min = 4, message = "Le format du code est incorrect")
+ @Size(max = 16, message = "Le format du code est incorrect")
+ @CriteriaEntitySearch(libelle = "Code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Libellé obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @NotNull(message = "Le noeud doit être associé à un référentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3)
+ private Referentiel referentiel;
+
+ @NotNull(message = "Participant obligatoire")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Participant", fieldName = "participant.code", rang = 4)
+ private Participant participant;
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "noeuds")
+ @JsonIgnore
+ private Set<GroupeNoeud> groupeNoeuds;
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "noeudsEnvoi")
+ @JsonIgnore
+ private Set<Routage> routageEnvois = new HashSet<>();
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "noeudsReception")
+ @JsonIgnore
+ private Set<Routage> routageReceptions = new HashSet<>();
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public String toString() {
+ return this.getCode() + " - " + this.getLibelle();
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 53 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof Noeud)) {
+ return false;
+ }
+ Noeud other = (Noeud) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Participant.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Participant.java
new file mode 100644
index 0000000..8f17f22
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Participant.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@XmlRootElement(name = "participants")
+@XmlAccessorType(XmlAccessType.FIELD)
+@NoArgsConstructor
+public class Participant implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Code obligatoire")
+ @Size(min = 3, message = "Le champ code doit avoir 3 caractères")
+ @Size(max = 3, message = "Le champ code doit avoir 3 caractères")
+ @CriteriaEntitySearch(libelle = "Code", fieldName = "code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Libellé obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", fieldName = "code", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ private String rue;
+
+ private String adresse;
+
+ private String ville;
+
+ private String email;
+
+ @NotNull(message = "Le participant doit être associé à un référentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3)
+ private Referentiel referentiel;
+
+ @NotNull(message = "Pays obligatoire")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Pays", fieldName = "pays.code", rang = 4)
+ private Pays pays;
+
+ @XmlTransient
+ @OneToMany(mappedBy = "participant")
+ @JsonIgnore
+ private Set<Noeud> noeuds;
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "participants")
+ @JsonIgnore
+ private Set<GroupeParticipant> groupeParticipants;
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "participantsEnvoi")
+ @JsonIgnore
+ private Set<Routage> routageEnvois = new HashSet<>();
+
+ @XmlTransient
+ @ManyToMany(mappedBy = "participantsReception")
+ @JsonIgnore
+ private Set<Routage> routageReceptions = new HashSet<>();
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public String toString() {
+ return this.getCode() + " - " + this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Participant other = (Participant) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 13 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Pays.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Pays.java
new file mode 100644
index 0000000..69b8f59
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Pays.java
@@ -0,0 +1,98 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement(name = "paysList")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Pays implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Code obligatoire")
+ @CriteriaEntitySearch(libelle = "Code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Libelle obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @XmlTransient
+ @OneToMany(mappedBy = "pays")
+ @JsonIgnore
+ Set<Participant> participants = new HashSet<>();
+
+ @NotNull(message = "Le pays doit être associé à un référentiel en préparation")
+ @ManyToOne(cascade = CascadeType.REFRESH)
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3)
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @CriteriaEntitySearch(libelle = "Date enregistrement", visible = false)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public String toString() {
+ return this.getCode() + " - " + this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Pays other = (Pays) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 29 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Referentiel.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Referentiel.java
new file mode 100644
index 0000000..e09c0bd
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Referentiel.java
@@ -0,0 +1,140 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement(name = "referentielList")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Referentiel implements Serializable {
+
+ @Id
+ @NotBlank(message = "La version est obligatoire")
+ @CriteriaEntitySearch(libelle = "Version", rang = 1)
+ private String version;
+
+ @NotBlank(message = "La description est obligatoire")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ private String description;
+
+ @NotNull(message = "Le statut du référentiel est obligatoire")
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Statut Referentiel", rang = 3)
+ private StatutReferentiel statutReferentiel;
+
+ @OneToMany(mappedBy = "referentiel")
+ @XmlTransient
+ @JsonIgnore
+ private Set<ExtensionFichier> extensionFichiers = new HashSet<>();
+
+ @OneToMany(mappedBy = "referentiel")
+ @XmlTransient
+ @JsonIgnore
+ private Set<ApplicationSource> applicationSources = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<Routage> routages = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<Pays> pays = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<Participant> participants = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<ValidateurFichierConfiguration> validateurFichierConfigurations = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<Noeud> noeuds = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<GroupeParticipant> groupeParticipants = new HashSet<>();
+
+ @XmlTransient
+ @OneToMany(mappedBy = "referentiel")
+ @JsonIgnore
+ private Set<GroupeNoeud> groupeNoeuds = new HashSet<>();
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateGeneration;
+
+ @Override
+ public String toString() {
+ return this.getVersion();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Referentiel other = (Referentiel) obj;
+ if (this.getVersion() != null && !this.getVersion().equals(other.getVersion())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 61 * hash + Objects.hashCode(this.version);
+ return hash;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Routage.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Routage.java
new file mode 100644
index 0000000..6ddd156
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/Routage.java
@@ -0,0 +1,152 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@IdClass(RoutageId.class)
+@Getter
+@Setter
+@XmlRootElement(name = "routageList")
+@XmlAccessorType(XmlAccessType.FIELD)
+@NoArgsConstructor
+public class Routage implements Serializable {
+
+ @Id
+ @NotNull(message = "Le type de fichier est obligatoire")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "TypeFichier", fieldName = "typeFichier.code")
+ private TypeFichier typeFichier;
+
+ @Id
+ @NotNull(message = "Le routage doit être associé à un réfrérentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version")
+ private Referentiel referentiel;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_nd",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "noeud_id"))
+ private Set<Noeud> noeudsEnvoi = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_grpe_nd",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "groupe_noeud_id"))
+ private Set<GroupeNoeud> groupeNoeudsEnvoi = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_pct",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "participant_id"))
+ private Set<Participant> participantsEnvoi = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_grpe_pct",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "groupe_participant_id"))
+ private Set<GroupeParticipant> groupeParticipantsEnvoi = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_nd_rcpt",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "noeud_id"))
+ private Set<Noeud> noeudsReception = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_grpe_noeud_rcpt",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "groupe_noeud_id"))
+ private Set<GroupeNoeud> groupeNoeudsReception = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_pct_rcpt",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "participant_id"))
+ private Set<Participant> participantsReception = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(
+ name = "rtge_grpe_pct_rcpt",
+ joinColumns = {
+ @JoinColumn(name = "referentiel"),
+ @JoinColumn(name = "typeFichier")},
+ inverseJoinColumns = @JoinColumn(name = "grpe_pct_id"))
+ private Set<GroupeParticipant> groupeParticipantsReception = new HashSet<>();
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Routage routage = (Routage) o;
+ return referentiel != null && referentiel.equals(routage.getReferentiel())
+ && typeFichier != null && typeFichier.equals(routage.getTypeFichier());
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 79 * hash + Objects.hashCode(this.typeFichier);
+ hash = 79 * hash + Objects.hashCode(this.referentiel);
+ return hash;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/RoutageId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/RoutageId.java
new file mode 100644
index 0000000..1639071
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/RoutageId.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class RoutageId implements Serializable {
+
+ private String typeFichier;
+ private String referentiel;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/StructureLigne.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/StructureLigne.java
new file mode 100644
index 0000000..64d3043
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/StructureLigne.java
@@ -0,0 +1,113 @@
+/*
+ * 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.fdxcommons.model.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.EtatIntegration;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class StructureLigne implements Serializable {
+
+ @Id
+ @NotEmpty(message = "L'identifiant est obligatoire")
+ private String id;
+
+ @Range(min = 1, message = "La position doit être supérieure à 0")
+ private int position;
+
+ @NotEmpty(message = "Le code est obligatoire")
+ private String code;
+
+ private String designation;
+
+ @Range(min = 1, message = "La taille doit être supérieure à 0")
+ private int taille;
+
+ private String source;
+
+ private String formatDate;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le type de données est obligatoire")
+ private TypeDonnee typeDonnee;
+
+ @NotNull(message = "Le validateur de fichier doit être indiqué")
+ @ManyToOne
+ private ValidateurFichier validateurFichier;
+
+ @ManyToOne
+ private ApplicationSource applicationSource;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+// @Enumerated(EnumType.STRING)
+// private EtatIntegration etatIntegration = EtatIntegration.NOUVEAU;
+
+ @Override
+ public String toString() {
+ return this.code + " - " + this.designation;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof StructureLigne)) {
+ return false;
+ }
+ final StructureLigne other = (StructureLigne) obj;
+ if (this.getId() != null && !this.getId().equals(other.getId())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 47 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/TypeFichier.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/TypeFichier.java
new file mode 100644
index 0000000..6752827
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/TypeFichier.java
@@ -0,0 +1,121 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@XmlRootElement(name = "typeFichiersList")
+@XmlAccessorType(XmlAccessType.FIELD)
+@NoArgsConstructor
+public class TypeFichier implements Serializable {
+
+ @Id
+ @CriteriaEntitySearch(libelle = "Code", rang = 1)
+ private String code;
+
+ @NotEmpty(message = "Le libellé du type de fichier est obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ private String description;
+
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Participant", fieldName = "participant.code", rang = 3)
+ private Participant participant;
+
+ @NotNull(message = "Le type de fichier doit être associé à un référentiel en préparation")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 4)
+ private Referentiel referentiel;
+
+ @XmlTransient
+ @JsonIgnore
+ @OneToMany(mappedBy = "typeFichier")
+ private Set<Routage> routages = new HashSet<>();
+
+ @XmlTransient
+ @JsonIgnore
+ @OneToMany(mappedBy = "typeFichier")
+ private Set<ValidateurFichierConfiguration> validateurFichierConfigurations = new HashSet<>();
+
+ @XmlTransient
+ @JsonIgnore
+ @OneToMany(mappedBy = "typeFichier")
+ private Set<ValidateurFichier> validateurFichiers = new HashSet<>();
+
+ @NotNull(message = "La catégorie de fichier est obligatoire")
+ @Enumerated(EnumType.STRING)
+ private CategorieFichier categorieFichier;
+
+ @NotNull(message = "L'extension du type de fichier est obligatoire")
+ @ManyToOne
+ private ExtensionFichier extensionFichier;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public String toString() {
+ return this.getCode() + " - " + this.getLibelle();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof TypeFichier)) {
+ return false;
+ }
+ final TypeFichier other = (TypeFichier) obj;
+ if (this.getCode() != null && !this.getCode().equals(other.getCode())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 17 * hash + Objects.hashCode(this.code);
+ return hash;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichier.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichier.java
new file mode 100644
index 0000000..ac59c89
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichier.java
@@ -0,0 +1,99 @@
+/*
+ * 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.fdxcommons.model.referentiel;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ValidateurFichier implements Serializable {
+
+ @Id
+ @NotNull(message = "Aucun identifiant spécifié")
+ private String id;
+
+ @Range(min = 1, message = "Le nombre de position doit être supérieure à 0")
+ private int nombrePosition;
+
+ @NotNull(message = "Le type de fichier est obligatoire")
+ @ManyToOne
+ private TypeFichier typeFichier;
+
+ @OneToMany(mappedBy = "validateurFichier", cascade = CascadeType.ALL)
+ @XmlTransient
+ @JsonIgnore
+ private Set<StructureLigne> structureLignes = new HashSet<>();
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+// @Enumerated(EnumType.STRING)
+// private EtatIntegration etatIntegration = EtatIntegration.NOUVEAU;
+ @Override
+ public String toString() {
+ return this.typeFichier.toString();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof ValidateurFichier)) {
+ return false;
+ }
+ final ValidateurFichier other = (ValidateurFichier) obj;
+ if (this.getTypeFichier() != null && !this.getTypeFichier().equals(other.getTypeFichier())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 53 * hash + Objects.hashCode(this.typeFichier);
+ return hash;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfiguration.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfiguration.java
new file mode 100644
index 0000000..d94e347
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfiguration.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxcommons.model.referentiel;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@XmlRootElement(name = "validateurFichierConfigurationList")
+@XmlAccessorType(XmlAccessType.FIELD)
+@IdClass(ValidateurFichierConfigurationId.class)
+@Getter
+@Setter
+@NoArgsConstructor
+public class ValidateurFichierConfiguration implements Serializable {
+
+ @Id
+ @NotNull(message = "Le type de fichier est obligatoire")
+ @ManyToOne
+ private TypeFichier typeFichier;
+
+ @Id
+ @NotNull(message = "La configuration du validateur doit être associée à un réfrérentiel en préparation")
+ @ManyToOne
+ private Referentiel referentiel;
+
+ @NotEmpty(message = "Le fichier de validation est obligatoire")
+ private String fileName;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ValidateurFichierConfiguration other = (ValidateurFichierConfiguration) o;
+ return referentiel != null && referentiel.equals(other.getReferentiel())
+ && typeFichier != null && typeFichier.equals(other.getTypeFichier());
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 5;
+ hash = 71 * hash + Objects.hashCode(this.typeFichier);
+ hash = 71 * hash + Objects.hashCode(this.referentiel);
+ return hash;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfigurationId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfigurationId.java
new file mode 100644
index 0000000..7effab0
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/ValidateurFichierConfigurationId.java
@@ -0,0 +1,23 @@
+/*
+ * 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.fdxcommons.model.referentiel;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ValidateurFichierConfigurationId implements Serializable {
+ private String typeFichier;
+ private String referentiel;
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistorique.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistorique.java
new file mode 100644
index 0000000..5f1e936
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistorique.java
@@ -0,0 +1,75 @@
+package com.megatim.fdxcommons.model.referentiel.historique;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CollectionTable;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@IdClass(ReferentielIntegrationHistoriqueId.class)
+@NoArgsConstructor
+@AllArgsConstructor
+public class ReferentielIntegrationHistorique implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Le code du type fichier est obligatoire")
+ private String codeTypeFichier;
+
+ @Id
+ @NotEmpty(message = "La version du référentiel est obligatoire")
+ private String referentielVersion;
+
+ @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER)
+ @CollectionTable(
+ name = "ref_int_historique_depending_refs", // Name of the table for the collection
+ joinColumns = {@JoinColumn(name = "codetypefichier"), @JoinColumn(name = "referentielversion")} // Foreign key column in the collection table
+ )
+ private Set<String> dependingReferentiels;
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 67 * hash + Objects.hashCode(this.codeTypeFichier);
+ hash = 67 * hash + Objects.hashCode(this.referentielVersion);
+ hash = 67 * hash + Objects.hashCode(this.dependingReferentiels);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final ReferentielIntegrationHistorique other = (ReferentielIntegrationHistorique) obj;
+
+ if (other.getCodeTypeFichier() != null && other.getReferentielVersion() != null) {
+ return other.getCodeTypeFichier().equals(this.codeTypeFichier) && other.getReferentielVersion().equals(this.referentielVersion);
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistoriqueId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistoriqueId.java
new file mode 100644
index 0000000..cef098d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/ReferentielIntegrationHistoriqueId.java
@@ -0,0 +1,23 @@
+/*
+ * 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.fdxcommons.model.referentiel.historique;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ReferentielIntegrationHistoriqueId implements Serializable {
+
+ private String codeTypeFichier;
+ private String referentielVersion;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/pojo/TableDefinitionFiltered.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/pojo/TableDefinitionFiltered.java
new file mode 100644
index 0000000..4c6262c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/historique/pojo/TableDefinitionFiltered.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxcommons.model.referentiel.historique.pojo;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TableDefinitionFiltered {
+
+ private final List<TableDefinition> tablesToCreate;
+ private final List<ReferentielIntegrationHistorique> refIntegrationHistorique;
+
+ public TableDefinitionFiltered(List<TableDefinition> tablesToCreate, List<ReferentielIntegrationHistorique> refIntegrationHistorique) {
+ this.tablesToCreate = tablesToCreate;
+ this.refIntegrationHistorique = refIntegrationHistorique;
+ }
+
+ public List<TableDefinition> getTablesToCreate() {
+ return tablesToCreate;
+ }
+
+ public List<ReferentielIntegrationHistorique> getRefIntegrationHistorique() {
+ return refIntegrationHistorique;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProduction.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProduction.java
new file mode 100644
index 0000000..fcca8ee
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProduction.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxcommons.model.referentiel.natureproduction;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum NatureProduction {
+ REFERENTIELLE("REFERENTIELLE"),
+ CUMMULATIVE("CUMMULATIVE");
+
+ private final String value;
+
+ private NatureProduction(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public static NatureProduction fromValue(String value) {
+ switch (value) {
+ case "REFERENTIELLE":
+ return NatureProduction.REFERENTIELLE;
+ case "CUMMULATIVE":
+ return NatureProduction.CUMMULATIVE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichier.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichier.java
new file mode 100644
index 0000000..83888a1
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichier.java
@@ -0,0 +1,83 @@
+/*
+ * 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.fdxcommons.model.referentiel.natureproduction;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.megatim.fdxcommons.model.referentiel.LocalDateTimeAdapter;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.NotNull;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.CreationTimestamp;
+import org.hibernate.annotations.UpdateTimestamp;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@IdClass(NatureProductionFichierId.class)
+@Getter
+@Setter
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+public class NatureProductionFichier implements Serializable {
+
+ @Id
+ @NotNull(message = "Le type de fichier est obligatoire")
+ @ManyToOne
+ private TypeFichier typeFichier;
+
+ @Id
+ @NotNull(message = "L'élement doit être associé à un réfrérentiel en préparation")
+ @ManyToOne
+ private Referentiel referentiel;
+
+ @NotNull(message = "La nature de la production est obligatoire")
+ @Enumerated(value = EnumType.STRING)
+ private NatureProduction natureProduction;
+
+ @JsonFormat(pattern = "dd/MM/yyyy HH:mm:ss")
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @CreationTimestamp
+ private LocalDateTime dateCreation;
+
+ @JsonFormat(pattern = "dd/MM/yyyy HH:mm:ss")
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @UpdateTimestamp
+ private LocalDateTime dateMiseAjour;
+
+ private String createBy;
+
+ private String lastModifiedBy;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ NatureProductionFichier natureProductionFichier = (NatureProductionFichier) o;
+ return referentiel != null && referentiel.equals(natureProductionFichier.getReferentiel())
+ && typeFichier != null && typeFichier.equals(natureProductionFichier.getTypeFichier());
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichierId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichierId.java
new file mode 100644
index 0000000..6694375
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/referentiel/natureproduction/NatureProductionFichierId.java
@@ -0,0 +1,22 @@
+/*
+ * 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.fdxcommons.model.referentiel.natureproduction;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class NatureProductionFichierId implements Serializable {
+ private String typeFichier;
+ private String referentiel;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remoteaction/RemoteConfigurationId.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remoteaction/RemoteConfigurationId.java
new file mode 100644
index 0000000..fa055e6
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remoteaction/RemoteConfigurationId.java
@@ -0,0 +1,23 @@
+/*
+ * 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.fdxcommons.model.remoteaction;
+
+import java.io.Serializable;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author ASUS
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class RemoteConfigurationId implements Serializable {
+
+ private String codeTypeFichier;
+ private String codeParticipant;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/ScheduleAction.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/ScheduleAction.java
new file mode 100644
index 0000000..59f1eb0
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/ScheduleAction.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.remotedataproduction.enums;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum ScheduleAction {
+
+ AJOUTER("AJOUTER"),
+ SUPPRIMER("SUPPRIMER"),
+ MODIFIER("MODIFIER"),
+ NEUTRE("NEUTRE");
+
+ private String type = "";
+
+ private ScheduleAction(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public static ScheduleAction fromValeur(String value) {
+ switch (value) {
+ case "AJOUTER":
+ return ScheduleAction.AJOUTER;
+ case "SUPPRIMER":
+ return ScheduleAction.SUPPRIMER;
+ case "MODIFIER":
+ return ScheduleAction.MODIFIER;
+ case "NEUTRE":
+ return ScheduleAction.NEUTRE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return type;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/TypePas.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/TypePas.java
new file mode 100644
index 0000000..ecd8c26
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/remotedataproduction/enums/TypePas.java
@@ -0,0 +1,43 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxcommons.model.remotedataproduction.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum TypePas {
+ MINUTE("Minutes"),
+ HEUR("Heurs");
+
+ private final String value;
+
+ private TypePas(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ public static TypePas fromValeur(String value) {
+ switch (value) {
+ case "MINUTE":
+ return TypePas.MINUTE;
+ case "HEUR":
+ return TypePas.HEUR;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/CriteriaEntitySearch.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/CriteriaEntitySearch.java
new file mode 100644
index 0000000..ca56e66
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/CriteriaEntitySearch.java
@@ -0,0 +1,27 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.model.search;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author ASUS
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface CriteriaEntitySearch {
+
+ public String libelle();
+
+ public String fieldName() default "";
+
+ public int rang() default 0;
+
+ public boolean visible() default true;//Permet de definir si le champ sera visible à l'utilisateur final ou pas
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/EnumValue.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/EnumValue.java
new file mode 100644
index 0000000..58c4c8d
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/EnumValue.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.model.search;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author ASUS
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface EnumValue {
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/Search.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/Search.java
new file mode 100644
index 0000000..4da5900
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/Search.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.model.search;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author ASUS
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface Search {
+ public String fieldName() default "";
+
+ public String dateFormat() default "";
+
+ public boolean endOfDay() default false;
+
+ public String operatorFieldName() default "";
+
+ public SearchAnnotationOperateur operateur() default SearchAnnotationOperateur.LIKE;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchColumn.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchColumn.java
new file mode 100644
index 0000000..b1c2dae
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchColumn.java
@@ -0,0 +1,32 @@
+/*
+ * 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.fdxcommons.model.search;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class SearchColumn {
+
+ private TypeDonnee typeDonnee;
+
+ private String libelle;
+
+ private Class<?> classe;
+
+ private List<String> valuesOfEnum = new ArrayList<>();
+
+ private int rang;
+
+ private String fieldName;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchCriteria.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchCriteria.java
new file mode 100644
index 0000000..12a6c6c
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/search/SearchCriteria.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.model.search;
+
+import com.megatim.fdxcommons.model.enumeration.NumberOperator;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import javax.persistence.criteria.From;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class SearchCriteria {
+
+ private String fieldName;
+ private Class<?> fieldType;
+ private SearchAnnotationOperateur operateur;
+ private NumberOperator numberOperator = NumberOperator.UNKNOW;
+ private Object fieldValue;
+ private From<?, ?> from;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/ColumnDefinitionSearch.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/ColumnDefinitionSearch.java
new file mode 100644
index 0000000..30c9f1a
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/ColumnDefinitionSearch.java
@@ -0,0 +1,31 @@
+/*
+ * 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.fdxcommons.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ColumnDefinitionSearch {
+
+ @Search(fieldName = "referentielVersion", operateur = SearchAnnotationOperateur.EQUALS)
+ private String referentielVersion;
+
+ @Search(fieldName = "codeTypeFichier", operateur = SearchAnnotationOperateur.EQUALS)
+ private String codeTypeFichier;
+
+ @Search(fieldName = "name", operateur = SearchAnnotationOperateur.EQUALS)
+ private String columnName;
+
+// @Search(fieldName = "etatIntegration", operateur = SearchAnnotationOperateur.EQUALS)
+// private EtatIntegration etatIntegration;
+}
diff --git a/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/TableDefinitionSearch.java b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/TableDefinitionSearch.java
new file mode 100644
index 0000000..6635123
--- /dev/null
+++ b/fdx-commons/fdxcommons-model/src/main/java/com/megatim/fdxcommons/model/searchentities/TableDefinitionSearch.java
@@ -0,0 +1,25 @@
+/*
+ * 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.fdxcommons.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableDefinitionSearch {
+
+ @Search(fieldName = "referentielVersion", operateur = SearchAnnotationOperateur.EQUALS)
+ private String referentielVersion;
+
+ @Search(fieldName = "codeTypeFichier", operateur = SearchAnnotationOperateur.EQUALS)
+ private String codeTypeFichier;
+}
diff --git a/fdx-commons/fdxcommons-service-ifaces/.gitignore b/fdx-commons/fdxcommons-service-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-commons/fdxcommons-service-ifaces/nb-configuration.xml b/fdx-commons/fdxcommons-service-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-service-ifaces/pom.xml b/fdx-commons/fdxcommons-service-ifaces/pom.xml
new file mode 100644
index 0000000..0ffb728
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-ifaces/pom.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.service.ifaces</groupId>
+ <artifactId>fdxcommons-service-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-multipart-provider</artifactId>
+ <version>3.6.3.Final</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>application-backend-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.core.ifaces</groupId>
+ <artifactId>fdxcommons-core-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.ibm.icu</groupId>
+ <artifactId>icu4j</artifactId>
+ <version>61.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <name>fdxcommons-service-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-service-impl/.gitignore b/fdx-commons/fdxcommons-service-impl/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-commons/fdxcommons-service-impl/nb-configuration.xml b/fdx-commons/fdxcommons-service-impl/nb-configuration.xml
new file mode 100644
index 0000000..a4186d1
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/nb-configuration.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>ide</org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-service-impl/pom.xml b/fdx-commons/fdxcommons-service-impl/pom.xml
new file mode 100644
index 0000000..fde526d
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/pom.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>fdxcommons</artifactId>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.service.impl</groupId>
+ <artifactId>fdxcommons-service-impl</artifactId>
+ <version>1.0</version>
+ <packaging>war</packaging>
+
+ <name>fdxcommons-service-impl</name>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ <jakartaee>8.0</jakartaee>
+ <serveur.jboss.repertoire.deploiement.war>D:\wildfly-17.0.0.Final-web-local\standalone\deployments\fdxcommons-service-impl-1.0.war</serveur.jboss.repertoire.deploiement.war>
+ <repertoire.target.generation.war>C:\Users\ASUS\Documents\NetBeansProjects\share_sources\fdx-commons\fdxcommons-service-impl\target\fdxcommons-service-impl-1.0.war</repertoire.target.generation.war>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.service.ifaces</groupId>
+ <artifactId>fdxcommons-service-ifaces</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.core.impl</groupId>
+ <artifactId>fdxcommons-core-impl</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>application-backend-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module-compression</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-multipart-provider</artifactId>
+ <version>3.6.3.Final</version>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct-processor</artifactId>
+ <version>1.5.3.Final</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.22</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.6</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- Ant run maven plugin -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <id>mkdir-files-artifact-repo</id>
+ <phase>install</phase>
+ <configuration>
+ <tasks>
+ <delete file="${serveur.jboss.repertoire.deploiement.war}"/>
+ <copy file="${repertoire.target.generation.war}" tofile="${serveur.jboss.repertoire.deploiement.war}"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/JAXRSConfiguration.java b/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/JAXRSConfiguration.java
new file mode 100644
index 0000000..803738d
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/JAXRSConfiguration.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxcommons.service.impl;
+
+import io.swagger.annotations.Contact;
+import io.swagger.annotations.Info;
+import io.swagger.annotations.SwaggerDefinition;
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+/**
+ * Configures JAX-RS for the application.
+ *
+ * @author Leonel FOFOU
+ */
+@ApplicationPath("fdx-commons")
+@SwaggerDefinition(info = @Info(
+ title = "Financial Data Exchange API",
+ description = "API Web pour l'interfaçage des fichiers de la plateforme Fdx",
+ version = "1.0.0",
+ contact = @Contact(
+ name = "Megatim group",
+ email = "contact@megatimgroup.com",
+ url = "http://megatimgroup.com"
+ )
+ )
+)
+public class JAXRSConfiguration extends Application {
+
+}
diff --git a/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/startup/StartupBean.java b/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/startup/StartupBean.java
new file mode 100644
index 0000000..df359d2
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/src/main/java/com/megatim/fdxcommons/service/impl/startup/StartupBean.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxcommons.service.impl.startup;
+
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+
+/**
+ *
+ * @author lenovo
+ */
+@Singleton
+@Startup
+public class StartupBean {
+
+}
diff --git a/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/beans.xml b/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..f8e2542
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
+ bean-discovery-mode="all">
+</beans>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/web.xml b/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..7dc72fb
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
+ <session-config>
+ <session-timeout>
+ 30
+ </session-timeout>
+ </session-config>
+</web-app>
diff --git a/fdx-commons/fdxcommons-service-impl/src/main/webapp/index.html b/fdx-commons/fdxcommons-service-impl/src/main/webapp/index.html
new file mode 100644
index 0000000..f67377e
--- /dev/null
+++ b/fdx-commons/fdxcommons-service-impl/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>API GAD </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ </head>
+ <body>
+ <h1>API GAD PROJECT </h1>
+ </body>
+</html>
diff --git a/fdx-commons/fdxcommons-tools/nb-configuration.xml b/fdx-commons/fdxcommons-tools/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/fdxcommons-tools/pom.xml b/fdx-commons/fdxcommons-tools/pom.xml
new file mode 100644
index 0000000..b48e7aa
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/pom.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <name>fdxcommons-tools</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-bom</artifactId>
+ <version>3.7.0</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>8.0</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.github.classgraph</groupId>
+ <artifactId>classgraph</artifactId>
+ <version>4.8.90</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.jasperreports</groupId>
+ <artifactId>jasperreports</artifactId>
+ <version>6.19.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.jasperreports</groupId>
+ <artifactId>jasperreports-fonts</artifactId>
+ <version>6.19.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.opencsv</groupId>
+ <artifactId>opencsv</artifactId>
+ <version>4.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>export-excel</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tika</groupId>
+ <artifactId>tika-parser-text-module</artifactId>
+ <version>2.9.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>module-compression</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <version>31.1-jre</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-endpointdsl</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-kafka</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-cdi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-jta</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-jdbc</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-ftp</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-rabbitmq</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ <version>2.13.1</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>jackson-annotations</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jackson-core</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jackson-databind</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>jackson-module-jaxb-annotations</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-jackson</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jackson-annotations</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jackson-core</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jackson-databind</artifactId>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>jackson-module-jaxb-annotations</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-rt</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.xml.bind</groupId>
+ <artifactId>jakarta.xml.bind-api</artifactId>
+ <version>2.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jaxb</groupId>
+ <artifactId>jaxb-runtime</artifactId>
+ <version>2.3.3</version>
+ </dependency>
+
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/AppFileUtils.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/AppFileUtils.java
new file mode 100644
index 0000000..79649ea
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/AppFileUtils.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxcommons.tools;
+
+import com.megatim.module.compression.impl.JavaZipZip4Impl;
+import java.io.File;
+import java.nio.file.Paths;
+
+/**
+ *
+ * @author lenovo
+ */
+public class AppFileUtils {
+
+ private AppFileUtils() {
+ }
+
+ public static File unzipFileInDirectory(String source, String destination) throws Exception {
+ File sourceFile = new File(source);
+ File destinationFile = new File(destination);
+
+ String sourceFileName = sourceFile.getName();
+ int lastIndex = sourceFileName.lastIndexOf(".");
+ String unzipFileName = sourceFileName.substring(0, lastIndex);
+
+ JavaZipZip4Impl zip = new JavaZipZip4Impl();
+ zip.unZipFile(sourceFile, destinationFile);
+
+ return Paths.get(destination, unzipFileName).toFile();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonAppContext.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonAppContext.java
new file mode 100644
index 0000000..f42672c
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonAppContext.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools;
+
+import java.io.File;
+
+/**
+ *
+ * @author lenovo
+ */
+public class CommonAppContext {
+
+ public static final String SERVER_DIR = getCurrentDirectory().getParent();
+ public static final String APP_DIR = SERVER_DIR + File.separator + "standalone" + File.separator + "apifdx";
+ public static final String TEMP_DIR = APP_DIR + File.separator + "tmp";
+ public static final String UPLOAD_DIR = APP_DIR + File.separator + "upload";
+ public static final String DOWNLOAD_DIR = APP_DIR + File.separator + "download";
+ public static final String DATA_DIR = APP_DIR + File.separator + "data";
+
+ public static final String REFERENTIEL_ZIP_FILE_NAME = "referentiel.zip";
+ public static final String UNZIP_REFERENTIEL_VALIDATEUR_DIR_NAME = "validateurs";
+ public static final String UNZIP_REFERENTIEL_VALIDATEUR_JSON_DIR_NAME = "validateursjson";
+
+ public static final String TOKEN_GENERATION_EXCHANGE = "tokenAuthentificationExchange";
+ public static final String TOKEN_GENERATION_QUEUE = "tokenAuthentificationQueue";
+ public static final String TOKEN_GENERATION_ROUTING_KEY = "tokenAuthentificationRoutingKey";
+
+ public static File getCurrentDirectory() {
+ String fileName = (String) System.getProperties().get("user.dir");
+ return new File(fileName);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonsTools.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonsTools.java
new file mode 100644
index 0000000..94fd17a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/CommonsTools.java
@@ -0,0 +1,1560 @@
+package com.megatim.fdxcommons.tools;
+
+import com.lowagie.text.Document;
+import com.lowagie.text.pdf.PdfContentByte;
+import com.lowagie.text.pdf.PdfImportedPage;
+import com.lowagie.text.pdf.PdfReader;
+import com.lowagie.text.pdf.PdfWriter;
+import com.opencsv.CSVReader;
+import com.opencsv.CSVReaderBuilder;
+import io.github.classgraph.ClassGraph;
+import io.github.classgraph.ClassInfoList;
+import io.github.classgraph.ScanResult;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.spec.InvalidKeySpecException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+import java.lang.annotation.Annotation;
+import java.text.NumberFormat;
+import java.util.Calendar;
+import java.util.Iterator;
+import net.sf.jasperreports.engine.JasperExportManager;
+import net.sf.jasperreports.engine.JasperFillManager;
+import net.sf.jasperreports.engine.JasperPrint;
+import net.sf.jasperreports.engine.JasperReport;
+import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
+import net.sf.jasperreports.engine.util.JRLoader;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+//import org.apache.poi.hwpf.HWPFDocument;
+//import org.apache.poi.hwpf.extractor.WordExtractor;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.apache.poi.xwpf.usermodel.XWPFRun;
+//import org.dhatim.fastexcel.reader.Row;
+import com.megatim.export.excel.Export;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import java.io.InputStream;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.FormatStyle;
+import java.util.Locale;
+import java.util.stream.IntStream;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import javax.ws.rs.core.MultivaluedMap;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author ABEGA
+ */
+public class CommonsTools {
+
+ /**
+ * Methode permettant de fusionner plusieur pdf
+ *
+ * @param inputPdfList
+ * @param outputStream
+ * @throws Exception
+ */
+ public static void mergePdfFiles(List<InputStream> inputPdfList, OutputStream outputStream) throws Exception {
+ //Create document and pdfReader objects.
+ Document document = new Document();
+ List<PdfReader> readers
+ = new ArrayList<>();
+ int totalPages = 0;
+
+ //Create pdf Iterator object using inputPdfList.
+ Iterator<InputStream> pdfIterator
+ = inputPdfList.iterator();
+
+ // Create reader list for the input pdf files.
+ while (pdfIterator.hasNext()) {
+ InputStream pdf = pdfIterator.next();
+ PdfReader pdfReader = new PdfReader(pdf);
+ readers.add(pdfReader);
+ totalPages = totalPages + pdfReader.getNumberOfPages();
+ }
+
+ // Create writer for the outputStream
+ PdfWriter writer = PdfWriter.getInstance(document, outputStream);
+
+ //Open document.
+ document.open();
+
+ //Contain the pdf data.
+ PdfContentByte pageContentByte = writer.getDirectContent();
+
+ PdfImportedPage pdfImportedPage;
+ int currentPdfReaderPage = 1;
+ Iterator<PdfReader> iteratorPDFReader = readers.iterator();
+
+ // Iterate and process the reader list.
+ while (iteratorPDFReader.hasNext()) {
+ PdfReader pdfReader = iteratorPDFReader.next();
+ //Create page and add content.
+ while (currentPdfReaderPage <= pdfReader.getNumberOfPages()) {
+ document.newPage();
+ pdfImportedPage = writer.getImportedPage(
+ pdfReader, currentPdfReaderPage);
+ pageContentByte.addTemplate(pdfImportedPage, 0, 0);
+ currentPdfReaderPage++;
+ }
+ currentPdfReaderPage = 1;
+ }
+
+ //Close document and outputStream.
+ outputStream.flush();
+ document.close();
+ outputStream.close();
+
+ }
+
+ /**
+ * Permet de convertir un tableau de bytes en un fichier
+ *
+ * @param nomFichier
+ * @param content
+ * @return
+ */
+ public static File convertBytesArrayToFile(String nomFichier, byte[] content) {
+
+ //Variables
+ FileOutputStream fileOuputStream = null;
+ File fichier = null;
+
+ try {
+
+ //Variables
+ fileOuputStream = new FileOutputStream(nomFichier);
+
+ //On lit le fichier
+ fileOuputStream.write(content);
+
+ //On ferme le fichier
+ fileOuputStream.close();
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return new File(nomFichier);
+ }
+
+ /**
+ * Permet de convertir un fichier en tableau de bytes
+ *
+ * @param fichier
+ * @return
+ */
+ public static byte[] convertFileToBytesArray(File fichier) {
+
+ //Variables
+ byte[] byteArray = new byte[(int) fichier.length()];
+
+ try {
+
+ //Variables
+ FileInputStream inputStream = new FileInputStream(fichier);
+
+ //On lit le fichier
+ inputStream.read(byteArray);
+
+ //On ferme le fichier
+ inputStream.close();
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return byteArray;
+ }
+
+ /**
+ * Permet d'exporter en excel dans repertoire donn�
+ *
+ * @param datas
+ * @param repertoireGeneration
+ * @return
+ */
+ public static File exporterEnExcel(List datas, File fichier) {
+
+ try {
+
+ //On effectue l'export
+ Export.exportExcel(datas, fichier.getAbsolutePath());
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return fichier;
+ }
+
+ /**
+ * Permet de verifier si une liste de valeurs est contenu dans une chaine
+ *
+ * @param chaine
+ * @param tab
+ * @return
+ */
+ public static boolean contains(String chaine, List<String> tab) {
+
+ //Variables
+ boolean bool = false;
+
+ //Si non vide
+ if (tab != null && !tab.isEmpty()) {
+
+ //On parcourt la liste des valeurs
+ for (String valeur : tab) {
+
+ //Si la chaine est contenu dans la chaine
+ if (chaine.contains(valeur)) {
+
+ //On set la valeur
+ bool = true;
+
+ //On sort
+ break;
+
+ }
+
+ }
+
+ }
+
+ return bool;
+ }
+
+ /**
+ * Cette methode permet les donnees depuis un fichier excel
+ *
+ * @param file
+ * @return
+ */
+ public static List<Cell> readExcelFile(File file) {
+
+ //On definit de variables de reference
+ FileInputStream inputStream = null;
+ Workbook workbook = null;
+ Sheet firstSheet = null;
+ Iterator<Row> iterator = null;
+
+ //Declaration
+ List<Cell> cellules = new ArrayList<Cell>();
+
+ try {
+
+ //Affectation
+ inputStream = new FileInputStream(file);
+ workbook = new XSSFWorkbook(inputStream);
+ firstSheet = workbook.getSheetAt(0);
+ //iterator = firstSheet.iterator();
+
+ for (int rowNumber = firstSheet.getFirstRowNum(); rowNumber <= firstSheet.getLastRowNum(); rowNumber++) {
+ Row row = firstSheet.getRow(rowNumber);
+ if (row == null) {
+ // This row is completely empty
+ } else {
+ // The row has data
+ for (int cellNumber = row.getFirstCellNum(); cellNumber <= row.getLastCellNum(); cellNumber++) {
+ Cell cell = row.getCell(cellNumber, Row.MissingCellPolicy.RETURN_BLANK_AS_NULL);
+
+// if (cell == null || cell.getCellType() == Cell.CELL_TYPE_BLANK) {
+//
+// //On ajoute la cellule
+// cellules.add(cell);
+//
+// } else {
+//
+//
+//
+// }
+ //On ajoute la cellule
+ cellules.add(cell);
+// if(cell != null){
+// System.out.println(">>>>>>>>>>>>>"+cell.getCellValue());
+// }else{
+// System.out.println("Cell NULLL>>>>>>>>>>>>>");
+// }
+
+ }
+ }
+ }
+
+ //On parcour la feuille
+// while (iterator.hasNext()) {
+// Row nextRow = iterator.next();
+// Iterator<Cell> cellIterator = nextRow.cellIterator();
+//
+// //On parcour les cellules
+// while (cellIterator.hasNext()) {
+//
+// //On ajoute les cellules
+// cellules.add(cellIterator.next());
+// }
+// }
+//
+ //On ferme le classeur
+ workbook.close();
+
+ //On ferme le stream
+ inputStream.close();
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ } finally {
+ try {
+ inputStream.close();
+ } catch (IOException ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+ }
+
+ return cellules;
+ }
+
+ /**
+ * Permet de lire un fichier csv
+ *
+ * @param file
+ * @return
+ * @throws Exception
+ */
+ public static List<String[]> readCsvFile(File file) throws Exception {
+
+ //Variables
+ List<String[]> allData = null;
+ InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
+ CSVReader csvReader = null;
+
+ try {
+
+ // create csvReader object and skip first Line
+ try {
+
+ //On lit le fichier
+ csvReader = new CSVReaderBuilder(inputStreamReader)
+ .withSkipLines(1)
+ .build();
+
+ //On recup�re les donn�es
+ allData = csvReader.readAll();
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ } finally {
+
+ //On ferme le reader
+ csvReader.close();
+ }
+
+ } finally {
+
+ //On ferme le fichier
+ inputStreamReader.close();
+ }
+
+ return allData;
+ }
+
+ /**
+ * Permet de mettre de mettre l'heure � minuit
+ *
+ * @param date
+ * @return
+ */
+ public static Date passerHeureAMinuit(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+
+ return calendar.getTime();
+ }
+
+ /**
+ * Permet de retourner la liste des codes valeurs ch�que
+ *
+ * @return
+ */
+ public static List<String> getCodeValeursCheque() {
+
+ //Variables
+ List<String> liste = new ArrayList<String>();
+
+ //On charge
+ liste.add("30");
+ liste.add("33");
+
+ return liste;
+ }
+
+ /**
+ * Permet de retourner la liste des codes valeurs virement
+ *
+ * @return
+ */
+ public static List<String> getCodeValeursVirement() {
+
+ //Variables
+ List<String> liste = new ArrayList<String>();
+
+ //On charge
+ liste.add("10");
+ liste.add("13");
+
+ return liste;
+ }
+
+ /**
+ * permet de g��nrer en pdf
+ *
+ * @param datas
+ * @param pdfFile
+ * @param reportFilePath
+ * @param params
+ * @return
+ * @throws Exception
+ */
+ public static File genererFichierPdf(List<?> datas, String pdfFile, String reportFilePath, Map params) throws Exception {
+
+ // Creation d'un File sur le fichier
+ File reportFile = new File(reportFilePath);
+ File fichierGenerer = new File(pdfFile);
+
+ //On cree le fichier s'ile n'existe pas
+ if (!fichierGenerer.exists()) {
+
+ //On cree le fichier
+ fichierGenerer.createNewFile();
+
+ }
+
+ // Chargement du Rapport
+ JasperReport report = null;
+
+ // Etat rempli
+ JasperPrint jasperPrint = null;
+
+ // Chargement du report
+ report = (JasperReport) JRLoader.loadObject(reportFile);
+ jasperPrint = JasperFillManager.fillReport(report, params, new JRBeanCollectionDataSource(datas, false));
+
+ OutputStream output = new FileOutputStream(fichierGenerer);
+ JasperExportManager.exportReportToPdfStream(jasperPrint, output);
+ output.close();
+
+ return fichierGenerer;
+ }
+
+ /**
+ * Permet de modifier un document word
+ *
+ * @param map
+ * @param pathFile
+ * @param repertoireDestination
+ * @return
+ * @throws Exception
+ */
+ public static String updateWordFileToOtherFile(Map<String, Object> map, String pathFile, String fileName, String repertoireDestination) throws Exception {
+
+ try {
+// System.out.println("---------------------------updateWordFileToOtherFile----------1111111111111--------------------------------------"+pathFile);
+ //Variables
+ FileInputStream fis = new FileInputStream(pathFile);
+ XWPFDocument doc = new XWPFDocument(fis);
+ FileOutputStream out = null;
+ //String fileName = genererValeurAleatoire() + ".docx";
+ String filePathDestination = repertoireDestination + File.separator + fileName + ".docx";
+
+ //On parcourt le document
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ for (XWPFParagraph p : doc.getParagraphs()) {
+ List<XWPFRun> runs = p.getRuns();
+ if (runs != null) {
+ for (XWPFRun r : runs) {
+ String text = r.getText(0);
+
+ //On verifie s'il elle contient la cle
+ if (text != null && text.contains(entry.getKey())) {
+
+ //Si la valeur est non vide
+ if (entry.getValue() != null) {
+
+ //On dermine le type
+ if (entry.getValue() instanceof String) {
+ text = text.replace(entry.getKey(), (String) entry.getValue());
+ r.setText(text, 0);
+ } else {
+ text = text.replace(entry.getKey(), entry.getValue().toString());
+ r.setText(text, 0);
+ }
+
+ } else {
+ r.setText("", 0);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //On ecrit dans le fichier
+ out = new FileOutputStream(new File(filePathDestination));
+ doc.write(out);
+ out.close();
+ doc.close();
+
+ return filePathDestination;
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ return null;
+ }
+
+ /**
+ * Permet de generer des nomre aleatorement
+ *
+ * @return
+ */
+ public static String genererValeurAleatoire() {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+ String nombre = format.format(new Date()) + String.valueOf((int) (Math.random() * 1000000000));
+ return nombre;
+ }
+
+ /**
+ * Permet de charger des classes qui ont une annotation pr�cise
+ *
+ * @param pkgName
+ * @param annotation
+ * @return
+ */
+ public static List<Annotation> getAnnotations(final String pkgName, String annotation) {
+
+ //Variables
+ List<Class<?>> classRefs = new ArrayList<>();
+
+ List<Annotation> annotations = new ArrayList<>();
+
+ try ( ScanResult scanResult = new ClassGraph().acceptPackages(pkgName).enableAllInfo().scan()) {
+
+ //On recup�re les classes annot�es
+ ClassInfoList liste = scanResult.getClassesWithAnnotation(annotation);
+
+ //On charge les classes
+ classRefs = liste.loadClasses();
+
+ //On parcourt les classes
+ for (Class<?> classe : classRefs) {
+
+ //On parcourt les annotations
+ for (Annotation annotationDeclaree : classe.getDeclaredAnnotations()) {
+
+ //On ajoute l'annotation
+ annotations.add(annotationDeclaree);
+
+ }
+
+ }
+
+ } catch (Exception e) {
+
+ //On affiche les traces
+ e.printStackTrace();
+
+ }
+
+ return annotations;
+ }
+
+ /**
+ * Permet de charger des classes qui ont une annotation pr�cise
+ *
+ * @param pkgName
+ * @param annotation
+ * @return
+ */
+ public static List<Class<?>> getAnnotatedClasses(final String pkgName, String annotation) {
+
+ //Variables
+ List<Class<?>> classRefs = new ArrayList<>();
+
+ try ( ScanResult scanResult = new ClassGraph().acceptPackages(pkgName).enableAllInfo().scan()) {
+
+ //On recup�re les classes annot�es
+ ClassInfoList liste = scanResult.getClassesWithAnnotation(annotation);
+
+ //On charge les classes
+ classRefs = liste.loadClasses();
+
+ } catch (Exception e) {
+
+ //On affiche les traces
+ e.printStackTrace();
+
+ }
+
+ return classRefs;
+ }
+
+ /**
+ * Permet verifier si une chaine est contenu un tableau de chaine
+ *
+ * @param value
+ * @param tab
+ * @return
+ * @throws Exception
+ */
+ public static boolean in(String value, String tab[]) {
+
+ //Variables
+ boolean bool = false;
+
+ //Si non null
+ if (tab != null && value != null) {
+
+ //On parcourt la chaine
+ for (String obj : tab) {
+
+ //Si trouv�
+ if (obj.equalsIgnoreCase(value)) {
+
+ //On marque comme trouv�
+ bool = true;
+
+ //On sort
+ break;
+
+ }
+
+ }
+
+ }
+
+ return bool;
+
+ }
+
+ /**
+ * Permet verifier si une chaine est contenu un tableau de chaine
+ *
+ * @param value
+ * @param tab
+ * @return
+ * @throws Exception
+ */
+ public static boolean contains(String value, String tab[]) {
+
+ //Variables
+ boolean bool = false;
+
+ //Si non null
+ if (tab != null && value != null) {
+
+ //On parcourt la chaine
+ for (String obj : tab) {
+
+ //Si trouv�
+ if (value.contains(obj)) {
+
+ //On marque comme trouv�
+ bool = true;
+
+ //On sort
+ break;
+
+ }
+
+ }
+
+ }
+
+ return bool;
+
+ }
+
+ /**
+ * Permet de charger le fichier
+ *
+ * @param contenuDuFichier
+ * @return
+ * @throws Exception
+ */
+ public static List<String> lireFichier(File fichier) throws Exception {
+
+ //Variables
+ List<String> lignes = null;
+
+ //On charge le fichier
+ lignes = chargerLesDonnees(new FileInputStream(fichier));
+
+ return lignes;
+ }
+
+ /**
+ * Permet de charger le fichier
+ *
+ * @param contenuDuFichier
+ * @return
+ * @throws Exception
+ */
+ public static List<String> chargerLesDonnees(Object contenuDuFichier) throws Exception {
+
+ //Variables
+ FileInputStream fichier = (FileInputStream) contenuDuFichier;
+ InputStreamReader inputStreamReader = new InputStreamReader(fichier);
+ BufferedReader entree;
+ List<String> contenuFichier;
+ String ligne = null;
+
+ //Affectation
+ entree = new BufferedReader((Reader) inputStreamReader);
+ contenuFichier = new ArrayList<String>();
+
+ //On parcourt ligne par ligne le fichier
+ while (true) {
+
+ //On lie une ligne dans le fichier
+ ligne = entree.readLine();
+
+ //Traitement si la ligne est non null
+ if (ligne != null) {
+
+ //On recupere la ligne
+ contenuFichier.add(ligne);
+ } else {
+
+ //On sort de la boucle
+ break;
+
+ }
+ }
+
+ //On close
+ entree.close();
+
+ return contenuFichier;
+
+ }
+
+ /**
+ * Permet de decouper le traitement en plusieurs processus
+ *
+ * @param <T>
+ * @param list
+ * @param subListNumber
+ * @return
+ */
+ public static <T> List<List<T>> splitList(List<T> list, int subListNumber) {
+
+ //Liste a retourner
+ List<List<T>> splitted = new ArrayList<List<T>>();
+
+ //Si la liste est vide
+ if (list == null || list.size() == 0) {
+ return splitted;
+ }
+
+ //CAs sp?cifique du nombre de sous liste inf?rieur ? 1
+ if (subListNumber <= 1) {
+
+ //Ajout de la liste courante ? la liste des sous liste
+ splitted.add(list);
+
+ //retour de la liste des sous liste
+ return splitted;
+ }
+
+ //Taille de la liste
+ int listSize = list.size();
+
+ //taille de la sous liste
+ int subListSize = Math.max(listSize / (subListNumber - 1), 1);
+
+ //parcours de la liste a splitter
+ for (int i = 0; i < listSize; i += subListSize) {
+
+ //Ajout de la sous-liste
+ splitted.add(new ArrayList<T>(list.subList(i, Math.min(listSize, i + subListSize))));
+ }
+
+ //On retourne la liste des sous-liste
+ return splitted;
+
+ }
+
+ /**
+ * Retourn le chemin courant
+ *
+ * @return
+ */
+ public static File getCurrentDirectory() {
+ String fileName = (String) System.getProperties().get("user.dir");
+ return new File(fileName);
+ }
+
+ public static Properties loadProperties(String filename) {
+ Properties properties = new Properties();
+
+ try {
+
+ //On charge le fichier de config
+ properties.load(new FileInputStream(filename));
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return properties;
+ }
+
+ /**
+ * Permet d'ecrire le fichier sur el disque
+ *
+ * @param content
+ * @param filename
+ * @throws IOException
+ */
+ public static void ecrireFichier(byte[] content, String filename) throws IOException {
+ File file = new File(filename);
+ if (!file.exists()) {
+ file.createNewFile();
+ }
+ FileOutputStream fop = new FileOutputStream(file);
+ fop.write(content);
+ fop.flush();
+ fop.close();
+ }
+
+ /**
+ * Permet de recup�erer le nom du fichier
+ *
+ * @param headers
+ * @return
+ */
+ public static String getNomFichier(MultivaluedMap<String, String> headers) {
+ String[] contentDisposition = headers.getFirst("Content-Disposition").split(";");
+ for (String filename : contentDisposition) {
+ if ((filename.trim().startsWith("filename"))) {
+ String[] name = filename.split("=");
+ String finalFileName = name[1].trim().replaceAll("\"", "");
+ return finalFileName;
+ }
+ }
+ return "";
+ }
+//
+// /**
+// * Permet de convertir un object java en json
+// *
+// * @param objects
+// * @return
+// */
+// public static String convertirJavaToJson(List<Object> objects) {
+//
+// //Variables
+// ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
+// StringBuilder json = new StringBuilder();
+//
+// try {
+//
+// //Si non null
+// if (objects != null && !objects.isEmpty()) {
+//
+// //On parcourt la liste
+// for (Object obj : objects) {
+//
+// //On parse en json
+// json.append(convertirJavaToJson(obj));
+//
+// }
+//
+// }
+//
+// } catch (Exception ex) {
+//
+// //On affiche l'erreur
+// ex.printStackTrace();
+//
+// }
+//
+// return json.toString();
+//
+// }
+
+ /**
+ * Permet de convertir un object java en json
+ *
+ * @param object
+ * @return
+ */
+// public static String convertirJavaToJson(Object object) {
+//
+// //Variables
+// ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
+// String json = null;
+//
+// try {
+//
+// //On convertit en json
+// json = ow.writeValueAsString(object);
+//
+// } catch (Exception ex) {
+//
+// //On affiche l'erreur
+// ex.printStackTrace();
+//
+// }
+//
+// return json;
+//
+// }
+ /**
+ * Permet de hacher le mot de passe
+ *
+ * @param password
+ * @return
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidKeySpecException
+ */
+ public static String encryptPassword(String password) {
+
+ try {
+
+ int iterations = 1000;
+ char[] chars = password.toCharArray();
+ byte[] salt = getSalt();
+
+ PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 64 * 8);
+ SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+
+ byte[] hash = skf.generateSecret(spec).getEncoded();
+ return iterations + ":" + toHex(salt) + ":" + toHex(hash);
+
+ } catch (Exception ex) {
+
+ //On affiche le message d'errreur
+ ex.printStackTrace();
+
+ }
+
+ return null;
+ }
+
+ /**
+ *
+ * @return @throws NoSuchAlgorithmException
+ */
+ public static byte[] getSalt() throws NoSuchAlgorithmException {
+ SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
+ byte[] salt = new byte[16];
+ sr.nextBytes(salt);
+ return salt;
+ }
+
+ /**
+ *
+ * @param array
+ * @return
+ * @throws NoSuchAlgorithmException
+ */
+ public static String toHex(byte[] array) throws NoSuchAlgorithmException {
+ BigInteger bi = new BigInteger(1, array);
+ String hex = bi.toString(16);
+
+ int paddingLength = (array.length * 2) - hex.length();
+ if (paddingLength > 0) {
+ return String.format("%0" + paddingLength + "d", 0) + hex;
+ } else {
+ return hex;
+ }
+ }
+
+ /**
+ * Permet de valider le mot de passe
+ *
+ * @param originalPassword
+ * @param storedPassword
+ * @return
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidKeySpecException
+ */
+ public static boolean validerMotDePasse(String originalPassword, String storedPassword)
+ throws NoSuchAlgorithmException, InvalidKeySpecException {
+ String[] parts = storedPassword.split(":");
+ int iterations = Integer.parseInt(parts[0]);
+
+ byte[] salt = fromHex(parts[1]);
+ byte[] hash = fromHex(parts[2]);
+
+ PBEKeySpec spec = new PBEKeySpec(originalPassword.toCharArray(),
+ salt, iterations, hash.length * 8);
+ SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+ byte[] testHash = skf.generateSecret(spec).getEncoded();
+
+ int diff = hash.length ^ testHash.length;
+ for (int i = 0; i < hash.length && i < testHash.length; i++) {
+ diff |= hash[i] ^ testHash[i];
+ }
+ return diff == 0;
+ }
+
+ /**
+ * Permet de convertir un hexadeicmal en tableau de byte
+ *
+ * @param hex
+ * @return
+ * @throws NoSuchAlgorithmException
+ */
+ public static byte[] fromHex(String hex) throws NoSuchAlgorithmException {
+ byte[] bytes = new byte[hex.length() / 2];
+ for (int i = 0; i < bytes.length; i++) {
+ bytes[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);
+ }
+ return bytes;
+ }
+
+ /**
+ * Permet de convertir une chaine en date
+ *
+ * @param formatSource
+ * @param date
+ * @return
+ */
+ public static Date getStringToDate(String formatSource, String date) {
+
+ //Variables
+ SimpleDateFormat valeur = new SimpleDateFormat(formatSource);
+
+ try {
+
+ return valeur.parse(date);
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ return null;
+
+ }
+ }
+
+ /**
+ * Permet de generer des nomre aleatorement
+ *
+ * @return
+ */
+ public static synchronized String genererChaineAleatoire() {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+ String nombre = format.format(new Date()) + String.valueOf((int) (Math.random() * 1000000000));
+ return nombre;
+ }
+
+ /**
+ * Echapper des caractere pour une requete sql
+ *
+ * @param chaine
+ * @return
+ */
+ public static String echapperCaractereRequete(String chaine) {
+
+ //Si non null
+ if (chaine != null) {
+
+ //on echappe
+ chaine = chaine.replaceAll("'", "''");
+
+ //On retourne
+ return chaine;
+
+ } else {
+ return "";
+ }
+
+ }
+
+ /**
+ * Permet de determiner le nombre d'occurences de cheques
+ *
+ * @param ncheque
+ * @return
+ */
+ public static int getNombreChequesTrouve(Map<String, Object> nbreOccurencesCheques, String numeroCheque) {
+
+ //Variables
+ int nbre = 0;
+
+ //On teste si la liste est non vide
+ if (nbreOccurencesCheques != null && nbreOccurencesCheques.get(numeroCheque.trim()) != null) {
+
+ //On recupere le nombre
+ nbre = ((BigDecimal) nbreOccurencesCheques.get(numeroCheque.trim())).intValue();
+
+ }
+
+ return nbre;
+
+ }
+
+ /**
+ * Permet de mettre la premi�re lettre en majuscule uniquement
+ *
+ * @param chaine
+ * @return
+ */
+ public static String mettreLesPremieresLettresChaineEnMajuscule(String chaine) {
+
+ //Vairiables
+ String resultat = "";
+ String tab[] = null;
+
+ //On splitte sur la base des espaces
+ tab = chaine.split(" ");
+
+ if (tab != null) {
+
+ //On parcourt la chaine
+ for (int i = 0; i < tab.length; i++) {
+
+ //Si nous ne sommes pas encore arriv� � la fin de la chaine
+ if (i < (tab.length - 1)) {
+ resultat = resultat + mettrePremiereLettreEnMajuscule(tab[i]) + " ";
+ } else {
+ resultat = resultat + mettrePremiereLettreEnMajuscule(tab[i]);
+ }
+
+ }
+
+ }
+
+ return resultat;
+ }
+
+ /**
+ * Permet de mettre la premi�re lettre en majuscule uniquement
+ *
+ * @param chaine
+ * @return
+ */
+ public static String mettrePremiereLettreEnMajuscule(String chaine) {
+
+ //Variables
+ String resultat = "";
+
+ if (chaine != null && !chaine.isEmpty()) {
+
+ //On met toute la chaine en minuscule
+ resultat = chaine.toLowerCase();
+
+ //On met la premiere lettre en majucule
+ char premiereLettre = resultat.charAt(0);
+
+ // convert it to an UpperCase letter
+ char premiereLettreMajuscule = Character.toUpperCase(premiereLettre);
+
+ //On ajoute remplace la premiere lettre
+ resultat = resultat.replaceFirst(Character.toString(resultat.charAt(0)), Character.toString(premiereLettreMajuscule));
+
+ }
+
+ return resultat;
+ }
+
+ /**
+ * Permet de convertir la date en toutes lettres
+ *
+ * @param date
+ * @param langue
+ * @param format
+ * @return
+ */
+ public static String convertirDateEnToutesLettres(Date date, Locale langue, FormatStyle format) {
+
+ //Variables
+ LocalDate dateConvertie = null;
+ String resultat = "";
+
+ //Si non null
+ if (date != null) {
+
+ //On convertit la date en type LocalDate
+ dateConvertie = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+ //On convertit en toutes lettres
+ resultat = dateConvertie.format(DateTimeFormatter.ofLocalizedDate(format).withLocale(langue));
+
+ }
+
+ return resultat;
+
+ }
+
+ /**
+ * Permet de formatter une date
+ * @param format
+ * @param date
+ * @return
+ */
+ public static String formaterDate(String format, LocalDateTime date) {
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
+ String formattedDate = date.format(formatter);
+ return formattedDate;
+ }
+
+ /**
+ * Permet de formatter une date
+ *
+ * @return the datePresentation
+ */
+ public static String formaterDate(String format, Date date) {
+
+ if (date != null) {
+ return new SimpleDateFormat(format).format(date);
+ } else {
+ return "";
+ }
+ }
+
+ /**
+ * Permet de formatter une date recu yyyyMMdd en ce format dd/MM/yy
+ *
+ * @return the datePresentation
+ */
+ public static String formatetterDate3(String dateAformatee) {
+
+ //On formate la date jj/MM/yyyy
+ String dateFormatee = null;
+
+ if (dateAformatee != null) {
+
+ String annee = dateAformatee.substring(0, 2);
+ String mois = dateAformatee.substring(2, 4);
+ String jour = dateAformatee.substring(4, 6);
+ dateFormatee = jour + "/" + mois + "/" + annee;
+
+ return dateFormatee;
+
+ } else {
+
+ return dateAformatee;
+
+ }
+ }
+
+ /**
+ * Prend une date au format yyyyMMdd et la transforme au format dd/MM/yyyy
+ *
+ * @param date
+ */
+ public static String formaterDateddMMyyyy(String date) {
+
+ //On formate la date jj/MM/yyyy
+ String dateFormatee = null;
+
+ if (date != null) {
+
+ String annee = date.substring(0, 4);
+ String mois = date.substring(4, 6);
+ String jour = date.substring(6, 8);
+ dateFormatee = jour + "/" + mois + "/" + annee;
+
+ return dateFormatee;
+ } else {
+ return date;
+ }
+
+ }
+
+ /**
+ * Prend une date au format yyyyMMddHHmmss et la transforme au format
+ * dd/MM/yyyy � HH:mm:ss
+ *
+ * @param date
+ */
+ public static String formaterDateddMMyyyyHHmmss(String date) {
+
+ //On formate la date jj/MM/yyyy
+ String dateFormatee = null;
+ String heureFormatee = null;
+
+ if (date != null) {
+
+ String annee = date.substring(0, 4);
+ String mois = date.substring(4, 6);
+ String jour = date.substring(6, 8);
+ String heure = date.substring(8, 10);
+ String minute = date.substring(10, 12);
+ String seconde = date.substring(12, 14);
+
+ dateFormatee = jour + "/" + mois + "/" + annee;
+ heureFormatee = heure + ":" + minute + ":" + seconde;
+
+ return dateFormatee + " � " + heureFormatee;
+ } else {
+ return date;
+ }
+
+ }
+
+ /**
+ * Prend une date au format yyMMdd et la transforme au format dd/MM/yy
+ *
+ * @param date
+ */
+ public static String formaterDateyyMMdd(String date) {
+
+ //On formate la date jj/MM/yyyy
+ String dateFormatee = null;
+
+ if (date != null) {
+
+ String annee = date.substring(0, 2);
+ String mois = date.substring(2, 4);
+ String jour = date.substring(4, 6);
+ dateFormatee = jour + "/" + mois + "/" + annee;
+
+ return dateFormatee;
+ } else {
+ return date;
+ }
+
+ }
+
+ /**
+ * On affiche l'etat du virement
+ *
+ * @param item
+ * @return
+ */
+ public static String getCodeAgenceToRIB(String rib) {
+
+ //On test si le rib respecte la taille
+ if (rib != null && rib.length() >= 10) {
+ return rib.substring(5, 10);
+ } else {
+ return rib;
+ }
+
+ }
+
+ /**
+ * Permet de formatter une date recu yyyyMMdd en ce format dd/MM/yyyy
+ *
+ * @return the datePresentation
+ */
+ public static String formaterDateAuFormat(String format, String date) {
+
+ //Variables
+ Date valeur = null;
+ String dateFinale = "";
+ SimpleDateFormat formatDest = new SimpleDateFormat("dd/MM/yyyy");
+
+ //On recup�re la date
+ if (date != null && !date.trim().isEmpty()) {
+
+ try {
+
+ //Onr recupere la date
+ valeur = new SimpleDateFormat(format).parse(date);
+
+ //On formate au bon format
+ dateFinale = formatDest.format(valeur);
+
+ } catch (ParseException ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+ }
+
+ return dateFinale;
+
+ }
+
+ /**
+ * Fonction permettant d'appliquer le s�parateur de millier sur les montants
+ *
+ * @param montant
+ * @return
+ */
+ public static String separateurMillier(BigDecimal montant) {
+ NumberFormat numberFormat = NumberFormat.getInstance(java.util.Locale.FRENCH);
+ return (numberFormat.format(montant));
+ }
+
+ /**
+ * Permet de formatter une date
+ *
+ * @param formatSource
+ * @param date
+ * @param formatDestinataire
+ * @return
+ */
+ public static String formaterDateAuFormat(String formatSource, String date, String formatDestinataire) {
+
+ //Variables
+ Date valeur = null;
+ String dateFinale = "";
+ SimpleDateFormat format = new SimpleDateFormat(formatDestinataire);
+
+ //On recup�re la date
+ if (date != null && !date.trim().isEmpty()) {
+
+ try {
+
+ //Onr recupere la date
+ valeur = new SimpleDateFormat(formatSource).parse(date);
+
+ //On formate au bon format
+ dateFinale = format.format(valeur);
+
+ } catch (ParseException ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+ }
+
+ return dateFinale;
+
+ }
+
+ /**
+ * Permet determiner confirmation Sygma
+ *
+ * @param taille
+ * @param chaine
+ * @return
+ */
+ public static String determinerConfirmation(String dateReglement) {
+
+ //On teste si la chaine est non vide
+ if (dateReglement != null && !dateReglement.isEmpty()) {
+ return "Confirm�";
+ } else {
+ return "Non Confirm�";
+ }
+
+ }
+
+ public static String getFileExtension(String fileName) {
+ String extension = "";
+
+ try {
+ extension = fileName.substring(fileName.lastIndexOf("."));
+ } catch (Exception e) {
+ extension = "";
+ }
+
+ return extension;
+
+ }
+
+ /**
+ * Permet de retourer la taille en Kilo d'un fichier
+ *
+ * @param file
+ * @return
+ */
+ public static double getFileSizeKiloOctects(double octets) {
+ return (double) octets / 1024;
+ }
+
+ /**
+ * Permet de convertir un type en long en type Date
+ *
+ * @param file
+ * @return
+ */
+ public static Date convertLongTODate(Long time) {
+
+ //Variables
+ Calendar c = Calendar.getInstance();
+ Date date = null;
+
+ //Si non null
+ if (time != null) {
+
+ //On set la valeur
+ c.setTimeInMillis(time);
+
+ //On recup�re la date
+ date = c.getTime();
+
+ }
+
+ return date;
+ }
+
+ public static String buildErrorMessage(List<String> errors) {
+ StringBuilder stringBuilder = new StringBuilder("");
+ int size = errors.size();
+ IntStream.range(0, size).forEach(index -> {
+ String message = errors.get(index);
+ if ((index + 1) < size) {
+ stringBuilder.append(message).append("\n");
+ } else {
+ stringBuilder.append(message);
+ }
+ });
+ return stringBuilder.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/FileUtilities.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/FileUtilities.java
new file mode 100644
index 0000000..85c564b
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/FileUtilities.java
@@ -0,0 +1,39 @@
+/*
+ * 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.fdxcommons.tools;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+import org.apache.tika.parser.txt.CharsetDetector;
+import org.apache.tika.parser.txt.CharsetMatch;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FileUtilities {
+ public static Charset getCharset(File file) throws FileNotFoundException, IOException {
+
+ try ( InputStream stream = new FileInputStream(file); InputStream input = new BufferedInputStream(stream);) {
+ CharsetDetector charsetDetector = new CharsetDetector();
+
+ charsetDetector.setText(input);
+
+ CharsetMatch charsetMatch = charsetDetector.detect();
+ String charsetName = charsetMatch != null ? charsetMatch.getName() : "UTF-8";
+
+ return Charset.forName(charsetName);
+
+ } catch(UnsupportedCharsetException ex) {
+ return Charset.forName("UTF-8");
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/context/AppContext.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/context/AppContext.java
new file mode 100644
index 0000000..6554d8f
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/context/AppContext.java
@@ -0,0 +1,48 @@
+package com.megatim.fdxcommons.tools.context;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AppContext {
+ public static final String PROPERTY_FILE_PATH = System.getProperty("api-file");
+ public static final String BROKER_FILE_PATH = System.getProperty("broker-file");
+
+ public static final String USER_ACTION_TO_FDX_CONS_DIRECT = "userActionToFdxConsDirect";
+ public static final String USER_ACTION_TO_FDX_CONS_EXCHANGE = "userActionToFdxConsExchange";
+ public static final String USER_ACTION_TO_FDX_CONS_QUEUE = "userActionToFdxConsQueue";
+ public static final String USER_ACTION_TO_FDX_CONS_ROUTING_KEY = "userActionToFdxConsRoutingKey";
+ public static final String DELETE_DATAPRODUCTION_TIMER = "delete-dataproduction-timer";
+
+ /* Format de date */
+ public static String FORMAT_DATE_DDSlashMMSlashYYYY = "dd/MM/yyyy";
+ public static String FORMAT_DATE_MMSlashDDSlashYYYY = "MM/dd/yyyy";
+ public static String FORMAT_DATE_DDMMYYYYHHMMSS = "ddMMyyyyHHmmss";
+ public static String FORMAT_DATE_YYYYMMDD = "yyyyMMdd";
+ public static String FORMAT_DATE_HEURE_CLASSIQUE = "dd/MM/yyyy HH:mm:ss";
+ public static String FORMAT_DATE_YYYYTIRETMMTIRETDD = "yyyy-MM-dd";
+ public static String FORMAT_DATE_YYYYTIRETMMTIRETDD_HHMMSS = "yyyy-MM-dd HH:mm:ss";
+ public static String FORMAT_ANNEE_YYYY = "yyyy";
+ public static String FORMAT_ANNEE_YY = "yy";
+
+ public static final String BROKER = "localhost:9092&maxRequestSize=100000000";
+
+ public static final String REFERENTIEL_INTEGRATION_EXCHANGE = "referentielIntegrationExchange";
+ public static final String REFERENTIEL_INTEGRATION_QUEUE = "referentielIntegrationQueue";
+ public static final String REFERENTIEL_INTEGRATION_ROUTING_KEY = "referentielIntegrationRoutingKey";
+
+ public static final String DATA_INTEGRATION_EXCHANGE = "dataIntegrationExchange";
+ public static final String DATA_INTEGRATION_QUEUE = "dataIntegrationQueue";
+ public static final String DATA_INTEGRATION_ROUTING_KEY = "dataIntegrationRoutingKey";
+
+ public static final String REMOTE_CONFIGURATION_EXCHANGE = "remoteConfigurationExchange";
+ public static final String REMOTE_CONFIGURATION_QUEUE = "remoteConfigurationQueue";
+ public static final String REMOTE_CONFIGURATION_ROUTING_KEY = "remoteConfigurationRoutingKey";
+
+ /* Variables */
+ public static Map<String, String> registre_codes_http = new HashMap<>();
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/connection/DBConnection.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/connection/DBConnection.java
new file mode 100644
index 0000000..0b5c195
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/connection/DBConnection.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxcommons.tools.database.connection;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DBConnection {
+
+ private final DataSource dataSource;
+
+ public DBConnection(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ public Connection connection() throws SQLException {
+ return dataSource.getConnection();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/AppColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/AppColumnDefinition.java
new file mode 100644
index 0000000..14a10bb
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/AppColumnDefinition.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface AppColumnDefinition {
+
+ String name();
+
+ String type();
+
+ boolean isNull();
+
+ Object defaultValue();
+
+ default boolean isPrimaryKey() {
+ return false;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/DefaultPreparedStatementProcessor.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/DefaultPreparedStatementProcessor.java
new file mode 100644
index 0000000..68250b7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/DefaultPreparedStatementProcessor.java
@@ -0,0 +1,64 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DefaultPreparedStatementProcessor implements PreparedStatementProcessor {
+
+ private final AtomicInteger lastIndex;
+
+ public DefaultPreparedStatementProcessor() {
+ lastIndex = new AtomicInteger(0);
+ }
+
+ public DefaultPreparedStatementProcessor(int startIndex) {
+ lastIndex = new AtomicInteger(startIndex);
+ }
+
+ @Override
+ public void process(PreparedStatement statement, List<QueryParam> queryParameters) throws NamingException, SQLException {
+ processStatement(statement, queryParameters);
+ }
+
+ @Override
+ public int lastProcessedIndex() {
+ return lastIndex.get();
+ }
+
+ private void processStatement(PreparedStatement preparedStatement, List<QueryParam> params) throws SQLException {
+
+ int statementIndex = 1;
+
+ for (QueryParam parameter : params) {
+
+ Object value = parameter.getParamValue();
+ if (value instanceof String) {
+ preparedStatement.setString(statementIndex, value.toString());
+ } else if (value instanceof Integer) {
+ preparedStatement.setInt(statementIndex, (Integer) value);
+ } else if (value instanceof Long) {
+ preparedStatement.setLong(statementIndex, (Long) value);
+ } else if (value instanceof Double) {
+ preparedStatement.setDouble(statementIndex, (Double) value);
+ } else if (value instanceof LocalDateTime) {
+ preparedStatement.setTimestamp(statementIndex, Timestamp.valueOf((LocalDateTime) value));
+ } else {
+ preparedStatement.setObject(statementIndex, value);
+ }
+
+ statementIndex++;
+ }
+
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Insert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Insert.java
new file mode 100644
index 0000000..9dd6bbd
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Insert.java
@@ -0,0 +1,10 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface Insert {
+
+ long insert(TypeFichierInsertMetaData insertMetaData) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonInsert.java
new file mode 100644
index 0000000..750d3c8
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonInsert.java
@@ -0,0 +1,15 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JsonInsert {
+ long insert(JsonFdxParsedDataIterator parsedDataIterator) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonResultSetProcessor.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonResultSetProcessor.java
new file mode 100644
index 0000000..04f6892
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonResultSetProcessor.java
@@ -0,0 +1,143 @@
+/*
+ * 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.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonResultSetProcessor {
+
+ private final ResultSet resultSet;
+ private final JsonTableDefinition tableDefinition;
+
+ public JsonResultSetProcessor(ResultSet resultSet, JsonTableDefinition tableDefinition) {
+ this.resultSet = resultSet;
+ this.tableDefinition = tableDefinition;
+ }
+
+ public Map<Long, Object> process() throws SQLException {
+ Map<Long, Object> data = new HashMap<>();
+
+ while (resultSet.next()) {
+ mergeData(resultSet, tableDefinition, data, null);
+ }
+ return data;
+ }
+
+ /**
+ *
+ * @param resSet : ligne de données à traiter
+ * @param tableDefinition : structure de la donnée à extraire
+ * @param data : données ayant été extraites lors des précédents parcours
+ * @param parentId : L'id du parent de la donnée
+ * @return : retourne les données extraites
+ * @throws SQLException
+ */
+ private Object mergeData(ResultSet resSet, JsonTableDefinition tableDefinition, Map<Long, Object> data, Long parentId) throws SQLException {
+ Map<String, String> columnsAliasToColumnName = columnsAliasToColumnName(tableDefinition.getColumnDefs(), tableDefinition.getTableName());
+ String indexAlias = columnAlias(tableDefinition.getTableName(), new IndexColumnDefinition().name());
+ final Long fdxIndex = resSet.getLong(indexAlias);
+
+ String parentIdAlias = null;
+ Long childParentId = null;
+
+ if (parentId != null) {
+ parentIdAlias = columnAlias(tableDefinition.getTableName(), new ParentIdColumnDefinition().name());
+ childParentId = resSet.getLong(parentIdAlias);
+ }
+
+ if (parentId == null || parentId.equals(childParentId)) {
+ if (data.containsKey(fdxIndex)) {
+ Object obj = data.get(fdxIndex);
+ Map map = (Map) obj;
+
+ for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) {
+ Object ob = (Map) map.get(t.getParentFieldName());
+ Map<Long, Object> m = new HashMap<>();
+
+ if (ob != null) {
+ m = (Map) ob;
+ }
+ map.put(t.getParentFieldName(), mergeData(resSet, t, m, fdxIndex));
+ data.put(fdxIndex, map);
+ }
+
+ } else {
+ Map<String, Object> simpleData = simpleData = retrieveData(resSet, columnsAliasToColumnName);
+ data.put(fdxIndex, simpleData);
+
+ for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) {
+ String newParentIdAlias = columnAlias(t.getTableName(), new ParentIdColumnDefinition().name());
+ Long newChildParentId = resSet.getLong(newParentIdAlias);
+
+ if (newChildParentId.equals(fdxIndex)) {
+ Map<Long, Object> m = new HashMap<>();
+ mergeData(resSet, t, m, fdxIndex);
+ simpleData.put(t.getParentFieldName(), m);
+ }
+ }
+
+ return data;
+ }
+ }
+ return data;
+ }
+
+
+ /**
+ * Extraction des données simples d'un objet
+ *
+ * @param resultSet
+ * @param columnsAliasToColumnName
+ * @return
+ * @throws SQLException
+ */
+ private Map<String, Object> retrieveData(ResultSet resultSet, Map<String, String> columnsAliasToColumnName) throws SQLException {
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnCount = metaData.getColumnCount();
+ Map<String, Object> selectResult = new HashMap<>();
+
+ for (int i = 1; i <= columnCount; i++) {
+ if (columnsAliasToColumnName.containsKey(metaData.getColumnName(i).trim().toLowerCase())) {
+ selectResult.put(columnsAliasToColumnName.get(metaData.getColumnName(i).trim().toLowerCase()), resultSet.getObject(i));
+ }
+ }
+ return selectResult;
+ }
+
+ /**
+ * Méthode qui associe chaque alias de colonne au nom réel de colonne
+ *
+ * @param columnsDef
+ * @param tableName : table
+ * @return
+ */
+ private Map<String, String> columnsAliasToColumnName(List<ColumnDefinition> columnsDef, String tableName) {
+ Map<String, String> columnsAliasToColumnName = new HashMap<>();
+
+ columnsDef.stream().forEach(c -> {
+ columnsAliasToColumnName.put(columnAlias(tableName, c.getName()), c.getName());
+ });
+ columnsAliasToColumnName.put(columnAlias(tableName, new IndexColumnDefinition().name()), new IndexColumnDefinition().name());
+ columnsAliasToColumnName.put(columnAlias(tableName, new ParentIdColumnDefinition().name()), new ParentIdColumnDefinition().name());
+ return columnsAliasToColumnName;
+ }
+
+ private String columnAlias(String tableName, String columnName) {
+ return (tableName + "_" + columnName).toLowerCase();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonStructureIterator.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonStructureIterator.java
new file mode 100644
index 0000000..8f1c2fd
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonStructureIterator.java
@@ -0,0 +1,135 @@
+/*
+ * 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.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonStructureIterator {
+
+ private final JsonStructure jsonStructure;
+ private final String tableName;
+
+ public JsonStructureIterator(String tableName, JsonStructure jsonStructure) {
+ this.jsonStructure = jsonStructure;
+ this.tableName = tableName;
+ }
+
+ /**
+ * ColumnDefinition mais avec le nom complet de la colonne (exples :
+ * adresse.ville, cpteBanque.rib pour les colonnes de niveau 2)
+ *
+ * @return
+ */
+ public List<ColumnDefinition> columnsDefinitionWithFullQualifiedName() {
+ List<ColumnDefinition> columnsDefinition = new ArrayList<>();
+
+ List<JsonStructure> fields = jsonStructure.getFields();
+ List<JsonStructure> fieldsWithoutParent = fields.stream().filter(f -> !f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+ List<JsonStructure> fieldsWithParent = fields.stream().filter(f -> f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+
+ columnsDefinition.addAll(columnsDefinitionWithFullQualifiedName(fieldsWithoutParent, ""));
+ fieldsWithParent.stream().forEach(j -> columnsDefinition.addAll(columnsDefinitionWithFullQualifiedName(j, "")));
+
+ return columnsDefinition;
+ }
+
+ public JsonTableDefinition tableDefinition() throws SQLException {
+ List<JsonStructure> fields = jsonStructure.getFields();
+
+ List<JsonStructure> simpleFields = fields.stream().filter(f -> !f.isCollection() && !f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+ JsonTableDefinition tableDefinition = new JsonTableDefinition(tableName.toLowerCase(), columnsDefinition(simpleFields), null, "");
+
+ List<JsonStructure> objectFields = fields.stream().filter(f -> f.isCollection() || f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+
+ for (JsonStructure j : objectFields) {
+ tableDefinition.getTablesDefinition().add(tableDefinition(j, tableName, j.getName()));
+ }
+ return tableDefinition;
+ }
+
+ private List<ColumnDefinition> columnsDefinitionWithFullQualifiedName(JsonStructure jsonStructure, String parentFullQualifiedName) {
+ List<ColumnDefinition> columnsDefinition = new ArrayList<>();
+
+ for (JsonStructure j : jsonStructure.getFields()) {
+ if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ if (parentFullQualifiedName.isEmpty()) {
+ columnsDefinition.addAll(columnsDefinitionWithFullQualifiedName(j, jsonStructure.getName()));
+ } else {
+ columnsDefinition.addAll(columnsDefinitionWithFullQualifiedName(j, parentFullQualifiedName + "." + jsonStructure.getName()));
+ }
+ } else {
+ if (parentFullQualifiedName.isEmpty()) {
+ columnsDefinition.add(columnDefinitionWithFullQualifiedName(j, jsonStructure.getName()));
+ } else {
+ columnsDefinition.add(columnDefinitionWithFullQualifiedName(j, parentFullQualifiedName + "." + jsonStructure.getName()));
+ }
+
+ }
+ }
+ return columnsDefinition;
+ }
+
+ private JsonTableDefinition tableDefinition(JsonStructure jsonStruct, String parentTableName, String parentFieldName) {
+ JsonTableDefinition tableDef = null;
+
+ if (jsonStruct.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ List<JsonStructure> simpleFields = jsonStruct.getFields().stream().filter(f -> !f.isCollection() && !f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+ tableDef = new JsonTableDefinition((parentTableName + "_" + jsonStruct.getName()).toLowerCase(), columnsDefinition(simpleFields), parentTableName.toLowerCase(), parentFieldName);
+
+ List<JsonStructure> objectFields = jsonStruct.getFields().stream().filter(f -> f.isCollection() || f.getTypeDonnee().equals(TypeDonnee.OBJET)).collect(Collectors.toList());
+
+ for (JsonStructure j : objectFields) {
+ String newParentTableName = parentTableName.isEmpty() ? jsonStruct.getName() : parentTableName + "_" + jsonStruct.getName();
+ String newParentFieldName = parentFieldName.isEmpty() ? jsonStruct.getName() : parentFieldName + "." + j.getName();
+ tableDef.getTablesDefinition().add(tableDefinition(j, newParentTableName, newParentFieldName));
+ }
+ } else if (jsonStruct.isCollection()) {
+ tableDef = new JsonTableDefinition((parentTableName + "_" + jsonStruct.getName()).toLowerCase(), columnsDefinition(Arrays.asList(jsonStruct)), parentTableName.toLowerCase(), parentFieldName);
+ }
+ return tableDef;
+ }
+
+ private List<ColumnDefinition> columnsDefinition(List<JsonStructure> fields) {
+ List<ColumnDefinition> columnsDefinition = new ArrayList<>();
+ fields.stream().forEach(f -> columnsDefinition.add(new ColumnDefinition(f.getName(), f.getTypeDonnee().name(), f.getLengthh(), f.isRequired(), f.isCollection())));
+
+ return columnsDefinition;
+ }
+
+ private List<ColumnDefinition> columnsDefinitionWithFullQualifiedName(List<JsonStructure> fields, String parentFullQualifiedName) {
+ List<ColumnDefinition> columnsDefinition = new ArrayList<>();
+ fields.stream().forEach(f -> {
+ if (parentFullQualifiedName.isEmpty()) {
+ columnsDefinition.add(new ColumnDefinition(f.getName(), f.getTypeDonnee().name(), f.getLengthh(), f.isRequired(), f.isCollection()));
+ } else {
+ columnsDefinition.add(new ColumnDefinition(parentFullQualifiedName + "." + f.getName(), f.getTypeDonnee().name(), f.getLengthh(), f.isRequired(), f.isCollection()));
+ }
+ }
+ );
+
+ return columnsDefinition;
+ }
+
+ private ColumnDefinition columnDefinitionWithFullQualifiedName(JsonStructure f, String parentFullQualifiedName) {
+ if (parentFullQualifiedName.isEmpty()) {
+ return new ColumnDefinition(f.getName(), f.getTypeDonnee().name(), f.getLengthh(), f.isRequired(), f.isCollection());
+ } else {
+ return new ColumnDefinition(parentFullQualifiedName + "." + f.getName(), f.getTypeDonnee().name(), f.getLengthh(), f.isRequired(), f.isCollection());
+ }
+
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierDataRow.java
new file mode 100644
index 0000000..569f778
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierDataRow.java
@@ -0,0 +1,18 @@
+/*
+ * 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.fdxcommons.tools.database.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JsonTypeFichierDataRow {
+
+ List<TypeFichierDataColumn> columns() throws Exception;
+
+ List<JsonTypeFichierDataRow> children();
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierInsertMetaData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierInsertMetaData.java
new file mode 100644
index 0000000..e6aa133
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/JsonTypeFichierInsertMetaData.java
@@ -0,0 +1,22 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JsonTypeFichierInsertMetaData {
+
+ String tableName();
+
+ TypeFichierDataRow row() throws Exception;
+
+ List<String> columnNames() throws Exception;
+
+ List<JsonTypeFichierInsertMetaData> children() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/PreparedStatementProcessor.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/PreparedStatementProcessor.java
new file mode 100644
index 0000000..97e88bb
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/PreparedStatementProcessor.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import java.sql.PreparedStatement;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface PreparedStatementProcessor {
+
+ void process(PreparedStatement statement, List<QueryParam> queryParameters) throws Exception;
+
+ int lastProcessedIndex();
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/QueryMetaData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/QueryMetaData.java
new file mode 100644
index 0000000..bad6628
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/QueryMetaData.java
@@ -0,0 +1,10 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface QueryMetaData<T> {
+
+ T execute() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/ResultSetExtractor.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/ResultSetExtractor.java
new file mode 100644
index 0000000..95623c5
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/ResultSetExtractor.java
@@ -0,0 +1,47 @@
+/*
+ * 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.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ResultSetExtractor {
+
+ private final ResultSet resultSet;
+ private final JsonTableDefinition tableDefinition;
+ private SimpleData data;
+ private final List<ResultSetExtractor> resultSetsExtractor = new ArrayList<>();
+
+ public ResultSetExtractor(ResultSet resultSet, JsonTableDefinition tableDefinition) {
+ this.resultSet = resultSet;
+ this.tableDefinition = tableDefinition;
+ }
+
+ public ResultSet getResultSet() {
+ return resultSet;
+ }
+
+ public JsonTableDefinition getTableDefinition() {
+ return tableDefinition;
+ }
+
+ public SimpleData getData() {
+ return data;
+ }
+
+ public void setData(SimpleData data) {
+ this.data = data;
+ }
+
+ public List<ResultSetExtractor> getResultSetsExtractor() {
+ return resultSetsExtractor;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Select.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Select.java
new file mode 100644
index 0000000..15bfcb3
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/Select.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface Select {
+
+ List<FdxTableRow> rows() throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/SimpleData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/SimpleData.java
new file mode 100644
index 0000000..c4777a0
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/SimpleData.java
@@ -0,0 +1,35 @@
+/*
+ * 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.fdxcommons.tools.database.contrat;
+
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SimpleData {
+ private final Long index;
+ private final Map<String, Object> data;
+
+ public SimpleData(Long index, Map<String, Object> data) {
+ this.index = index;
+ this.data = data;
+ }
+
+ public Long getIndex() {
+ return index;
+ }
+
+ public Map<String, Object> getData() {
+ return data;
+ }
+
+ @Override
+ public String toString() {
+ return "SimpleData{" + "index=" + index + ", data=" + data + '}';
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TableName.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TableName.java
new file mode 100644
index 0000000..ea9d59a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TableName.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TableName {
+
+ String name(Connection connection) throws SQLException;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataColumn.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataColumn.java
new file mode 100644
index 0000000..1f89886
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataColumn.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierDataColumn {
+
+ String column();
+
+ Object value() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataRow.java
new file mode 100644
index 0000000..2e5a590
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierDataRow.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierDataRow {
+
+ List<TypeFichierDataColumn> columns() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierInsertMetaData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierInsertMetaData.java
new file mode 100644
index 0000000..012ae4a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierInsertMetaData.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierInsertMetaData {
+
+ String tableName();
+
+ List<TypeFichierDataRow> rows() throws Exception;
+
+ List<String> columnNames() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierUpdateMetaData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierUpdateMetaData.java
new file mode 100644
index 0000000..01652f7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/contrat/TypeFichierUpdateMetaData.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierUpdateMetaData {
+
+ String tableName();
+
+ TypeFichierDataRow row() throws Exception;
+
+ List<String> columnNames() throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadColumnTypeException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadColumnTypeException.java
new file mode 100644
index 0000000..a6feeb7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadColumnTypeException.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BadColumnTypeException extends Exception {
+ public BadColumnTypeException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadDataValueException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadDataValueException.java
new file mode 100644
index 0000000..cff8293
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadDataValueException.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BadDataValueException extends Exception {
+
+ public BadDataValueException(String message) {
+ super(message);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadQueryCriteriaException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadQueryCriteriaException.java
new file mode 100644
index 0000000..225bdcf
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/BadQueryCriteriaException.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BadQueryCriteriaException extends Exception {
+ public BadQueryCriteriaException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/ColumnNotFoundException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/ColumnNotFoundException.java
new file mode 100644
index 0000000..1a6c05e
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/ColumnNotFoundException.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ColumnNotFoundException extends Exception {
+
+ public ColumnNotFoundException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/LocalDateTimeValueParseError.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/LocalDateTimeValueParseError.java
new file mode 100644
index 0000000..99f9a4c
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/LocalDateTimeValueParseError.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class LocalDateTimeValueParseError extends Exception {
+
+ public LocalDateTimeValueParseError(String message) {
+ super(message);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/MoreThanOneTableDataNotFoundException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/MoreThanOneTableDataNotFoundException.java
new file mode 100644
index 0000000..097362a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/MoreThanOneTableDataNotFoundException.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class MoreThanOneTableDataNotFoundException extends Exception {
+ public MoreThanOneTableDataNotFoundException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableDataNotFoundException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableDataNotFoundException.java
new file mode 100644
index 0000000..a570266
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableDataNotFoundException.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableDataNotFoundException extends WebApplicationException {
+ public TableDataNotFoundException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableNotCummulativeException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableNotCummulativeException.java
new file mode 100644
index 0000000..96042a3
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TableNotCummulativeException.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableNotCummulativeException extends WebApplicationException {
+ public TableNotCummulativeException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TypeFichierDataBadRequest.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TypeFichierDataBadRequest.java
new file mode 100644
index 0000000..e7c8b6e
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/exceptions/TypeFichierDataBadRequest.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.tools.database.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TypeFichierDataBadRequest extends Exception {
+
+ public TypeFichierDataBadRequest(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/AggregationQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/AggregationQuery.java
new file mode 100644
index 0000000..fab1510
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/AggregationQuery.java
@@ -0,0 +1,99 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class AggregationQuery implements QueryMetaData<List<String[]>> {
+
+ private final String tableName;
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final String targetColumn;
+ private final FonctionAggregation fonctionAggregation;
+ private final List<String> groupingColumns;
+
+ public AggregationQuery(String tableName, Connection connection, QueryCriterion queryCriterion, String targetColumn, List<String> groupingColumns, FonctionAggregation fonctionAggregation) {
+ this.tableName = tableName;
+ this.targetColumn = targetColumn;
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.groupingColumns = groupingColumns;
+ this.fonctionAggregation = fonctionAggregation;
+ }
+
+ @Override
+ public List<String[]> execute() throws Exception {
+
+ System.out.println("<------------------------------------------------------------------------------------------------------------------------------->");
+ System.out.println(aggregationQuery());
+ System.out.println("<------------------------------------------------------------------------------------------------------------------------------->");
+
+ try (PreparedStatement statement = connection.prepareStatement(aggregationQuery())) {
+
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+
+ List<String[]> results = new ArrayList<>();
+
+ while (resultSet.next()) {
+
+ String[] result = new String[groupingColumns.size() + 1];
+ result[0] = resultSet.getString(aggregationColumnName());
+ for (int i = 0; i < groupingColumns.size(); i++) {
+ String r = resultSet.getString(groupingColumns.get(i));
+ result[i + 1] = r != null ? r : "";
+ }
+
+ results.add(result);
+ }
+
+ return results;
+
+ }
+ }
+ }
+
+ private String aggregationQuery() {
+ StringBuilder query = new StringBuilder("SELECT COALESCE(" + fonctionAggregation.toString() + "(" + targetColumn + "), 0) AS " + aggregationColumnName()
+ + groupingColumnsSelection() + " FROM ").append(tableName);
+ query.append(new WhereQueryString(queryCriterion).query());
+ query.append(new GroupByQuery(groupingColumns).query());
+ return query.toString();
+ }
+
+ private String aggregationColumnName() {
+ return tableName + "_" + fonctionAggregation.toString();
+ }
+
+ private String groupingColumnsSelection() {
+ StringBuilder query = new StringBuilder();
+
+ int size = groupingColumns.size();
+ if (size > 0) {
+ query.append(", ");
+ }
+ IntStream.range(0, size).forEach(index -> {
+ String column = groupingColumns.get(index);
+ query.append(column);
+ if ((index + 1) < size) {
+ query.append(",");
+ }
+ });
+
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CountQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CountQuery.java
new file mode 100644
index 0000000..2067896
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CountQuery.java
@@ -0,0 +1,95 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CountQuery implements QueryMetaData<List<String[]>> {
+
+ private final String tableName;
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final List<String> groupingColumns;
+
+ public CountQuery(String tableName, Connection connection, QueryCriterion queryCriterion, List<String> groupingColumns) {
+ this.tableName = tableName;
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.groupingColumns = groupingColumns;
+ }
+
+ @Override
+ public List<String[]> execute() throws Exception {
+
+ System.out.println("<------------------------------------------------------------------------------------------------------------------------------->");
+ System.out.println(countQuery());
+ System.out.println("<------------------------------------------------------------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(countQuery())) {
+
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+
+ List<String[]> results = new ArrayList<>();
+
+ while (resultSet.next()) {
+
+ String[] result = new String[groupingColumns.size() + 1];
+ result[0] = resultSet.getString(countColumnName());
+ for (int i = 0; i < groupingColumns.size(); i++) {
+
+ String r = resultSet.getString(groupingColumns.get(i));
+ result[i + 1] = r != null ? r : "";
+ }
+
+ results.add(result);
+ }
+
+ return results;
+ }
+ }
+ }
+
+ private String countQuery() {
+ StringBuilder query = new StringBuilder("SELECT COUNT(*) AS " + countColumnName() + groupingColumnsSelection() + " FROM ").append(tableName);
+ query.append(new WhereQueryString(queryCriterion).query());
+
+ query.append(new GroupByQuery(groupingColumns).query());
+ return query.toString();
+ }
+
+ private String countColumnName() {
+ return tableName + "_count";
+ }
+
+ private String groupingColumnsSelection() {
+ StringBuilder query = new StringBuilder();
+
+ int size = groupingColumns.size();
+ if (size > 0) {
+ query.append(", ");
+ }
+ IntStream.range(0, size).forEach(index -> {
+ String column = groupingColumns.get(index);
+ query.append(column);
+ if ((index + 1) < size) {
+ query.append(",");
+ }
+ });
+
+ return query.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateDataProductionQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateDataProductionQuery.java
new file mode 100644
index 0000000..7df1a81
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateDataProductionQuery.java
@@ -0,0 +1,73 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CreateDataProductionQuery implements QueryMetaData<Long> {
+
+ private final CommonDataProduction dataProduction;
+ private final Connection connection;
+
+ public CreateDataProductionQuery(CommonDataProduction dataProduction, Connection connection) {
+ this.dataProduction = dataProduction;
+ this.connection = connection;
+ }
+
+ private String queryString() {
+ return "INSERT INTO dataproduction(id, dateproduction, referentielversion, codetypefichier, codeparticipant, source, filename, statutdataproduction, filedate, dataProductionType, token, nbreElements, tailleFichier, tokenDirectory)"
+ + " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ }
+
+ @Override
+ public Long execute() throws NamingException, SQLException {
+
+ System.out.println("<-------------------------------------------------------------------------->");
+ System.out.println(queryString());
+ System.out.println("<-------------------------------------------------------------------------->");
+
+ String getNextIdQuery = "SELECT nextval('SEQ_DATA_PRODUCTION')";
+
+ try (
+ PreparedStatement statement = connection.prepareStatement(queryString()); PreparedStatement getIdStatement = connection.prepareStatement(getNextIdQuery);// Fetch the next sequence value
+ ) {
+
+ long generatedId = dataProduction.getId() != null ? dataProduction.getId() : 0;
+
+ if (dataProduction.getId() == null || dataProduction.getId() <= 0) {//Si l'id de la production n'est pas encore initialisé (FdxApi)
+ ResultSet resultSet = getIdStatement.executeQuery();
+ if (resultSet.next()) {
+ generatedId = resultSet.getLong(1);
+ }
+ }
+
+ statement.setLong(1, generatedId);
+ statement.setTimestamp(2, dataProduction.getDateProduction() != null ? Timestamp.valueOf(dataProduction.getDateProduction()) : null);
+ statement.setString(3, dataProduction.getReferentielVersion());
+ statement.setString(4, dataProduction.getCodeTypeFichier());
+ statement.setString(5, dataProduction.getCodeParticipant());
+ statement.setString(6, dataProduction.getSource().name());
+ statement.setString(7, dataProduction.getFileName());
+ statement.setString(8, dataProduction.getStatutDataProduction().name());
+ statement.setTimestamp(9, dataProduction.getFileDate() != null ? Timestamp.valueOf(dataProduction.getFileDate()) : null);
+ statement.setString(10, dataProduction.getDataProductionType().name());
+ statement.setString(11, dataProduction.getToken());
+ statement.setLong(12, dataProduction.getNbreElements());
+ statement.setLong(13, dataProduction.getTailleFichier());
+ statement.setString(14, dataProduction.getTokenDirectory());
+
+ statement.executeUpdate();
+
+ return generatedId;
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateTableIfNotExistQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateTableIfNotExistQuery.java
new file mode 100644
index 0000000..908925e
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CreateTableIfNotExistQuery.java
@@ -0,0 +1,135 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.ALPHANUMERIQUE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DATE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DECIMAL;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.NUMERIQUE;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import com.megatim.fdxcommons.tools.database.exceptions.BadColumnTypeException;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.AppColumnDefinitions;
+import java.sql.Connection;
+import java.sql.JDBCType;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CreateTableIfNotExistQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final AppColumnDefinitions appColumnDefinitions;
+ private final TableName tableName;
+ private final List<ColumnDefinition> columnDefinitions;
+
+ public CreateTableIfNotExistQuery(
+ TableName tableName,
+ List<ColumnDefinition> columnDefinitions,
+ AppColumnDefinitions appColumnDefinitions,
+ Connection connection
+ ) {
+ this.connection = connection;
+ this.appColumnDefinitions = appColumnDefinitions;
+ this.tableName = tableName;
+ this.columnDefinitions = columnDefinitions;
+ }
+
+ @Override
+ public Void execute() throws SQLException, NamingException, BadColumnTypeException {
+
+ String query = query(tableName, columnDefinitions);
+
+ try ( Statement stmt = connection.createStatement()) {
+ stmt.execute(query);
+ }
+
+ return null;
+ }
+
+ private String query(TableName tableName, List<ColumnDefinition> columns) throws BadColumnTypeException, SQLException {
+
+ StringBuilder query = new StringBuilder("CREATE TABLE IF NOT EXISTS " + tableName.name(connection) + "(");
+ List<AppColumnDefinition> primaryKeys = new ArrayList<>();
+
+ //Ordonner les colonnes par ordre croissant des positions, afin de les insérer dans cet ordre
+ Collections.sort(columns, (ColumnDefinition c1, ColumnDefinition c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+
+ for (ColumnDefinition columnDefinition : columns) {
+ query.append(columnDefinition.getName().toLowerCase()).append(" ").append(sqlColumnType(columnDefinition)).append(", ");
+ }
+
+ for (AppColumnDefinition appColumnDefinition : appColumnDefinitions.appColumns()) {
+ query.append(columnDefinitonString(appColumnDefinition)).append(", ");
+
+ if (appColumnDefinition.isPrimaryKey()) {
+ primaryKeys.add(appColumnDefinition);
+ }
+ }
+ if (!primaryKeys.isEmpty()) {
+ query.append(" PRIMARY KEY(");
+ primaryKeys.stream().forEach(pk -> query.append(pk.name()).append(", "));
+
+ //Retirer la dernière virgule
+ query.replace(query.length() - 2, query.length(), "));");
+ } else {
+ //Retirer la dernière virgule
+ query.replace(query.length() - 2, query.length(), ");");
+ }
+
+ return query.toString();
+ }
+
+ private String sqlColumnType(ColumnDefinition column) throws BadColumnTypeException {
+ switch (TypeDonnee.fromValeur(column.getTypeDonnee())) {
+ case ALPHANUMERIQUE:
+ return jdbcType(column) + "(" + column.getTaille() + ")";
+ case NUMERIQUE:
+ return jdbcType(column).getName();
+ case DATE:
+ return jdbcType(column).getName() + " NULL";
+ case DECIMAL:
+ return jdbcType(column) + "(" + column.getTaille() + "," + column.getTaillePartieDecimale() + ")";
+ }
+ throw new BadColumnTypeException("Type de colonne incorrect " + column.getTypeDonnee());
+ }
+
+ private JDBCType jdbcType(ColumnDefinition column) throws BadColumnTypeException {
+ switch (TypeDonnee.fromValeur(column.getTypeDonnee())) {
+ case NUMERIQUE:
+ return column.getTaille() < 5 ? JDBCType.SMALLINT : JDBCType.BIGINT;
+ case DECIMAL:
+ return JDBCType.DECIMAL;
+ case DATE:
+ return JDBCType.TIMESTAMP;
+ case ALPHANUMERIQUE:
+ return JDBCType.VARCHAR;
+ }
+ throw new BadColumnTypeException("Type de colonne incorrect " + column.getName());
+ }
+
+ private String columnDefinitonString(AppColumnDefinition column) throws BadColumnTypeException {
+ StringBuilder definition = new StringBuilder();
+ definition
+ .append(column.name().toLowerCase())
+ .append(" ")
+ .append(column.type())
+ .append(" ")
+ .append(column.isNull() ? "NULL " : "NOT NULL ");
+ if (column.defaultValue() != null) {
+ definition
+ .append("DEFAULT ")
+ .append(column.defaultValue());
+ }
+ return definition.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CurrentDataProductionQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CurrentDataProductionQuery.java
new file mode 100644
index 0000000..44bb563
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CurrentDataProductionQuery.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CurrentDataProductionQuery implements QueryMetaData<Long> {
+
+ private final String codeTypeFichier;
+ private final String referentielVersion;
+ private final Connection connection;
+
+ public CurrentDataProductionQuery(String codeTypeFichier, String referentielVersion, Connection connection) {
+ this.codeTypeFichier = codeTypeFichier;
+ this.referentielVersion = referentielVersion;
+ this.connection = connection;
+ }
+
+ @Override
+ public Long execute() throws Exception {
+ String query = "SELECT MAX(id) FROM dataproduction WHERE codetypefichier = ? AND referentielversion = ?";
+ Long id = null;
+
+ try (PreparedStatement statement = connection.prepareStatement(query);) {
+
+ statement.setString(1, codeTypeFichier);
+ statement.setString(2, referentielVersion);
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ id = resultSet.getLong(1);
+ }
+ }
+ return id;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CustomQueries.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CustomQueries.java
new file mode 100644
index 0000000..e9fa997
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/CustomQueries.java
@@ -0,0 +1,89 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CustomQueries {
+
+ public Long selectMinIndexOfDataProduction(Long dataProdcutionId, String tableName, Connection connection) throws SQLException {
+ String query = "SELECT MIN(" + new IndexColumnDefinition().name() + ")"
+ + " FROM " + tableName
+ + " WHERE " + new DataProductionIdColumnDefinition().name() + " = " + dataProdcutionId;
+ Long min = null;
+
+ try ( PreparedStatement statement = connection.prepareStatement(query); ResultSet resultSet = statement.executeQuery()) {
+ while (resultSet.next()) {
+ min = resultSet.getLong(1);
+ }
+ }
+ return min;
+ }
+
+ public boolean fdxIndexExists(Long index, String tableName, Connection connection) throws SQLException {
+ String query = "SELECT * FROM " + tableName + " WHERE " + new IndexColumnDefinition().name() + " = ?";
+
+ boolean exists = false;
+
+ try ( PreparedStatement statement = connection.prepareStatement(query);) {
+ statement.setLong(1, index);
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ exists = true;
+ }
+ }
+ return exists;
+ }
+
+ public void deleteWhereIndexLowerThan(Long fdx_index, String tableName, Connection connection) throws SQLException {
+ String query = "DELETE FROM " + tableName + " WHERE " + new IndexColumnDefinition().name() + " < ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query);) {
+ statement.setLong(1, fdx_index);
+
+ statement.executeUpdate();
+ }
+ }
+
+ public Long countDataproductionElements(String token, Connection connection) throws SQLException {
+ String query = "SELECT COUNT(*) FROM " + CommonDataProduction.class.getSimpleName() + " WHERE token = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query);) {
+ statement.setString(1, token);
+ ResultSet result = statement.executeQuery();
+
+ result.next();
+ return result.getLong(1);
+ }
+ }
+
+ public List<Long> indexes(Long productionId, Connection connection) throws SQLException {
+ String query = "SELECT indexes FROM productionMetaData_indexes WHERE productionId = ? ORDER BY indexes";
+ List<Long> indexes = new ArrayList<>();
+
+ try ( PreparedStatement statement = connection.prepareStatement(query);) {
+ statement.setLong(1, productionId);
+ ResultSet resultSet = statement.executeQuery();
+
+ while (resultSet.next()) {
+ indexes.add(resultSet.getLong(1));
+ }
+ }
+ return indexes;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DataWithTokenToDataProductionQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DataWithTokenToDataProductionQuery.java
new file mode 100644
index 0000000..676267d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DataWithTokenToDataProductionQuery.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.*;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.Timestamp;
+
+public class DataWithTokenToDataProductionQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final CommonDataProduction dataProduction;
+ private final String token;
+ private final String tableName;
+
+ public DataWithTokenToDataProductionQuery(Connection connection, CommonDataProduction dataProduction, String token, String tableName) {
+ this.connection = connection;
+ this.dataProduction = dataProduction;
+ this.token = token;
+ this.tableName = tableName;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+
+ String query = "UPDATE " + tableName + " SET " + new DataProductionIdColumnDefinition().name() + " = ?, " + new DateCreationColumnDefinition().name() + " = ?, "
+ + new TokenColumnDefinition().name() + " = ?" + " WHERE " + new TokenColumnDefinition().name() + " = ?";
+
+ try (PreparedStatement stmt = connection.prepareStatement(query)) {
+ stmt.setLong(1, dataProduction.getId());
+ stmt.setTimestamp(2, Timestamp.valueOf(dataProduction.getDateProduction()));
+ stmt.setString(3, null);
+ stmt.setString(4, token);
+ stmt.executeUpdate();
+ }
+
+ return null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteQuery.java
new file mode 100644
index 0000000..2a163ee
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteQuery.java
@@ -0,0 +1,94 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DeletedColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DeleteQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final String tableName;
+ private final CommonDataProduction dataProduction;
+
+ public DeleteQuery(String tableName, Connection connection, QueryCriterion queryCriterion, CommonDataProduction dataProduction) {
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.tableName = tableName;
+ this.dataProduction = dataProduction;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+ System.out.println(deleteQuery());
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(deleteQuery())) {
+ connection.setAutoCommit(false);
+
+ new DefaultPreparedStatementProcessor().process(statement, deletedParameters());
+ statement.execute();
+ connection.commit();
+
+ return null;
+ }
+ }
+
+ private List<QueryParam> deletedParameters() throws Exception {
+
+ List<QueryParam> params = new ArrayList<>();
+
+ //On ajoute les paramètres spécifiques à l'application
+ params.add(new QueryParam(new DeletedColumnDefinition().name(), 1));
+ params.add(new QueryParam(new DataProductionUpdateIdColumnDefinition().name(), dataProduction.getId()));
+ params.add(new QueryParam(new DateMiseAJourColumnDefinition().name(), dataProduction.getDateProduction()));
+
+ //On ajoute ensuite les paramètre de la clause WHERE
+ params.addAll(new WhereQueryParameters(queryCriterion).parameters());
+
+ return params;
+ }
+
+ private String deleteQuery() throws Exception {
+ return "UPDATE " + tableName + " " + setQueryPart() + " " + new WhereQueryString(queryCriterion).query();
+ }
+
+ private String setQueryPart() throws Exception {
+
+ List<String> columnsToUpdate = new ArrayList<>();
+
+ //Pendant l'update on set également certaines colonnes de l'application
+ columnsToUpdate.add(new DeletedColumnDefinition().name());
+ columnsToUpdate.add(new DataProductionUpdateIdColumnDefinition().name());
+ columnsToUpdate.add(new DateMiseAJourColumnDefinition().name());
+
+ StringBuilder query = new StringBuilder("SET ");
+ int index = 0;
+
+ for (String column : columnsToUpdate) {
+ if ((index + 1) < columnsToUpdate.size()) {
+ query.append(column).append(" = ? ,");
+ } else {
+ query.append(column).append(" = ?");
+ }
+ index++;
+ }
+ return query.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteTableDataQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteTableDataQuery.java
new file mode 100644
index 0000000..61a77fe
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/DeleteTableDataQuery.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DeleteTableDataQuery implements QueryMetaData<Void> {
+
+ private final String tableName;
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+
+ public DeleteTableDataQuery(String tableName, Connection connection, QueryCriterion queryCriterion) {
+ this.tableName = tableName;
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+
+ System.out.println("<-------------------------------------------------------------------------->");
+ System.out.println("DELETE FROM " + tableName);
+ System.out.println("<-------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(deleteString())) {
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+ statement.executeUpdate();
+
+ return null;
+ }
+ }
+
+ private String deleteString() {
+ StringBuilder query = new StringBuilder("DELETE FROM ");
+ query
+ .append(tableName)
+ .append(new WhereQueryString(queryCriterion).query());
+
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/EchecIntegrationQueries.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/EchecIntegrationQueries.java
new file mode 100644
index 0000000..c4a7e60
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/EchecIntegrationQueries.java
@@ -0,0 +1,37 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author ASUS
+ */
+public class EchecIntegrationQueries {
+
+ private final Connection connection;
+ private final Long dataProductionId;
+
+ public EchecIntegrationQueries(Connection connection, Long dataProductionId) {
+ this.connection = connection;
+ this.dataProductionId = dataProductionId;
+ }
+
+ public void save() throws SQLException {
+ String query = "INSERT INTO ECHECINTEGRATION (dataproductionid, datecreation) values(?,?)";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ statement.setLong(1, dataProductionId);
+ statement.setTimestamp(2, Timestamp.valueOf(LocalDateTime.now()));
+
+ statement.executeUpdate();
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxApiInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxApiInsert.java
new file mode 100644
index 0000000..8e3df15
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxApiInsert.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.DefaultTypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.TokenColumnDefinition;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ * @author Gabuntu
+ */
+public class FdxApiInsert extends FdxInsert {
+
+ public FdxApiInsert(Connection connection, Long dataProductionId) {
+ super(connection, dataProductionId);
+ }
+
+ @Override
+ public long insert(TypeFichierInsertMetaData insertMetaData) throws SQLException, NamingException, Exception {
+
+ List<DefaultTypeFichierDataColumn> dataColumnsToAdd = dataColumnsToAdd();
+ new InsertQuery(insertMetaData.tableName(), connection, dataColumnsToAdd, insertMetaData.columnNames(), insertMetaData.rows()).execute();
+
+ return dataProductionId;
+ }
+
+ public void insert(TypeFichierInsertMetaData insertMetaData, String token) throws SQLException, NamingException, Exception {
+
+ List<DefaultTypeFichierDataColumn> dataColumnsToAdd = Arrays.asList(
+ new DefaultTypeFichierDataColumn(new TokenColumnDefinition().name(), token),
+ new DefaultTypeFichierDataColumn(new DataProductionIdColumnDefinition().name(), 0L)
+ );
+
+ new InsertQuery(insertMetaData.tableName(), connection, dataColumnsToAdd, insertMetaData.columnNames(), insertMetaData.rows()).execute();
+
+ }
+
+ private List<DefaultTypeFichierDataColumn> dataColumnsToAdd() {
+ return Arrays.asList(
+ new DefaultTypeFichierDataColumn(new DateCreationColumnDefinition().name(), LocalDateTime.now()),
+ new DefaultTypeFichierDataColumn(new DataProductionIdColumnDefinition().name(), dataProductionId)
+ );
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxConsultationInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxConsultationInsert.java
new file mode 100644
index 0000000..3f44c3e
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxConsultationInsert.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxConsultationInsert extends FdxInsert {
+
+ public FdxConsultationInsert(Connection dbConnection, Long dataProductionId) throws SQLException {
+ super(dbConnection, dataProductionId);
+ }
+
+ @Override
+ public long insert(TypeFichierInsertMetaData insertMetaData) throws SQLException, NamingException, Exception {
+
+ new InsertQuery(insertMetaData.tableName(), connection, Arrays.asList(), insertMetaData.columnNames(), insertMetaData.rows()).execute();
+
+ return dataProductionId;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxInsert.java
new file mode 100644
index 0000000..d9b4285
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxInsert.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.Insert;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class FdxInsert implements Insert {
+
+ protected final Connection connection;
+ protected final Long dataProductionId;
+
+ public FdxInsert(Connection connection, Long dataProductionId) {
+ this.connection = connection;
+ this.dataProductionId = dataProductionId;
+ }
+
+ @Override
+ public abstract long insert(TypeFichierInsertMetaData insertMetaData) throws Exception;
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxUpdate.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxUpdate.java
new file mode 100644
index 0000000..cb7cefc
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/FdxUpdate.java
@@ -0,0 +1,69 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierUpdateMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxUpdate {
+
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final TypeFichierUpdateMetaData updateMetaData;
+ private final CommonDataProduction dataProduction;
+
+ public FdxUpdate(Connection connection, QueryCriterion queryCriterion, TypeFichierUpdateMetaData updateMetaData, CommonDataProduction dataProduction) {
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.updateMetaData = updateMetaData;
+ this.dataProduction = dataProduction;
+ }
+
+ public void update() throws Exception {
+ List<QueryParam> params = finalParameters();
+ new UpdateQuery(connection, queryCriterion, updateMetaData.tableName(), columnNames(), params).execute();
+ }
+
+ private List<String> columnNames() throws Exception {
+ List<String> columNames = new ArrayList<>();
+ columNames.addAll(updateMetaData.columnNames());
+ columNames.add(new DataProductionUpdateIdColumnDefinition().name());
+ columNames.add(new DateMiseAJourColumnDefinition().name());
+
+ return columNames;
+ }
+
+ private List<QueryParam> finalParameters() throws Exception {
+
+ List<QueryParam> params = new ArrayList<>();
+
+ //On ajoute les paramètres de la clause SET
+ for (TypeFichierDataColumn c : updateMetaData.row().columns()) {
+ params.add(new QueryParam(c.column(), c.value()));
+ }
+
+ //On ajoute les paramètres de l'application
+ params.add(new QueryParam(new DataProductionUpdateIdColumnDefinition().name(), dataProduction.getId()));
+ params.add(new QueryParam(new DateMiseAJourColumnDefinition().name(), dataProduction.getDateProduction()));
+
+ //On ajoute ensuite les paramètre de la clause WHERE
+ params.addAll(new WhereQueryParameters(queryCriterion).parameters());
+
+ return params;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/GroupByQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/GroupByQuery.java
new file mode 100644
index 0000000..1377620
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/GroupByQuery.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import java.util.List;
+import java.util.stream.IntStream;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class GroupByQuery {
+
+ private final List<String> groupingColumns;
+
+ public GroupByQuery(List<String> groupingColumns) {
+ this.groupingColumns = groupingColumns;
+ }
+
+ public String query() {
+ StringBuilder query = new StringBuilder("");
+ if (!groupingColumns.isEmpty()) {
+ query
+ .append(" GROUP BY ")
+ .append(buildQuery());
+ }
+ return query.toString();
+ }
+
+ private String buildQuery() {
+ StringBuilder query = new StringBuilder();
+
+ int size = groupingColumns.size();
+ IntStream.range(0, size).forEach(index -> {
+ String column = groupingColumns.get(index);
+ query.append(column);
+ if ((index + 1) < size) {
+ query.append(",");
+ }
+ });
+
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertDataProductionInDataProductionToDeleteQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertDataProductionInDataProductionToDeleteQuery.java
new file mode 100644
index 0000000..420a9da
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertDataProductionInDataProductionToDeleteQuery.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author ASUS
+ */
+public class InsertDataProductionInDataProductionToDeleteQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final Long dataProductionId;
+
+ public InsertDataProductionInDataProductionToDeleteQuery(Connection connection, Long dataProductionId) {
+ this.connection = connection;
+ this.dataProductionId = dataProductionId;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+ if (dataProductionId != null && dataProductionId > 0) {
+ String query = "INSERT INTO dataproductiontodelete(id, datecreation) values (?,?)";
+ try (PreparedStatement statement = connection.prepareStatement(query);) {
+ statement.setLong(1, dataProductionId);
+ statement.setTimestamp(2, Timestamp.valueOf(LocalDateTime.now()));
+ statement.executeUpdate();
+ }
+ }
+ return null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertQuery.java
new file mode 100644
index 0000000..6396e72
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/InsertQuery.java
@@ -0,0 +1,103 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.PreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.queries.metadata.DefaultTypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class InsertQuery implements QueryMetaData<Void> {
+
+ private final String tableName;
+ protected final Connection connection;
+ private final List<String> columnNames;
+ private final List<TypeFichierDataRow> rows;
+ private final List<DefaultTypeFichierDataColumn> dataColumnsToAdd;
+ private final int BATCH_SIZE = 100_000;
+
+ public InsertQuery(String tableName, final Connection connection, List<DefaultTypeFichierDataColumn> dataColumnsToAdd, List<String> columnNames, List<TypeFichierDataRow> rows) {
+ this.tableName = tableName;
+ this.dataColumnsToAdd = dataColumnsToAdd;
+ this.connection = connection;
+ this.columnNames = columnNames;
+ this.rows = rows;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+ System.out.println("<-------------------------------------------------------------------------->");
+ System.out.println(insertQueryString());
+ System.out.println("<-------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(insertQueryString());) {
+
+ executeInBatch(statement, rows, dataColumnsToAdd);
+ statement.executeBatch();
+ }
+ return null;
+ }
+
+ private String insertQueryString() {
+ List<String> insertColumns = new ArrayList<>(columnNames);
+
+ for (DefaultTypeFichierDataColumn dc : dataColumnsToAdd) {
+ insertColumns.add(dc.column());
+ }
+
+ StringBuilder query = new StringBuilder("INSERT INTO " + tableName + "(");
+
+ insertColumns.forEach(column -> query.append(column).append(","));
+
+ query.replace(query.length() - 1, query.length(), ") VALUES(");
+
+ insertColumns.forEach(s -> query.append("?,"));
+
+ query.replace(query.length() - 1, query.length(), ")");
+
+ return query.toString();
+ }
+
+ private void executeInBatch(PreparedStatement preparedStatement, List<TypeFichierDataRow> rows, List<DefaultTypeFichierDataColumn> dataColumnsToAdd) throws SQLException, Exception {
+
+ int index = 0;
+ int count = 0;
+
+ for (TypeFichierDataRow row : rows) {
+
+ List<QueryParam> queryParameters = new ArrayList<>();
+
+ for (TypeFichierDataColumn dataColumn : row.columns()) {
+ queryParameters.add(new QueryParam(dataColumn.column(), dataColumn.value()));
+ }
+
+ //On ajoute les colonnes de dataColumnsToAdd
+ for (DefaultTypeFichierDataColumn dc : dataColumnsToAdd) {
+ queryParameters.add(new QueryParam(dc.column(), dc.value()));
+ }
+
+ PreparedStatementProcessor statementProcessor = new DefaultPreparedStatementProcessor(index);
+ statementProcessor.process(preparedStatement, queryParameters);
+ index = statementProcessor.lastProcessedIndex();
+
+ preparedStatement.addBatch();
+
+ if (++count % BATCH_SIZE == 0) {
+ preparedStatement.executeBatch();
+ }
+
+ }
+
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonCountQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonCountQuery.java
new file mode 100644
index 0000000..d1d1a8e
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonCountQuery.java
@@ -0,0 +1,111 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonCountQuery implements QueryMetaData<Long> {
+
+ private final JsonTableDefinition tableDefinition;
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final Map<String, String> tablesNameToAlias;
+
+ public JsonCountQuery(JsonTableDefinition tableDefinition, QueryCriterion queryCriterion, Connection connection, Map<String, String> tablesNameToAlias) {
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.tableDefinition = tableDefinition;
+ this.tablesNameToAlias = tablesNameToAlias;
+ }
+
+ @Override
+ public Long execute() throws Exception {
+ String query = countString() + fromString() + joinString() + whereString();
+ System.out.println("countQuery = " + query);
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ return resultSet.getLong(1);
+ }
+ return 0L;
+ }
+ }
+
+ private String countString() {
+ StringBuilder query = new StringBuilder("SELECT COUNT(");
+ query.append("DISTINCT(")
+ .append(tablesNameToAlias.get(tableDefinition.getTableName()))
+ .append(".")
+ .append(new IndexColumnDefinition().name())
+ .append("))");
+
+ return query.toString();
+ }
+
+ private String whereString() {
+ return "\n" + new WhereQueryString(queryCriterion).query();
+ }
+
+ private String fromString() {
+ StringBuilder fromPart = new StringBuilder("\nFROM ");
+ fromPart
+ .append(tableDefinition.getTableName())
+ .append(" ")
+ .append(tablesNameToAlias.get(tableDefinition.getTableName()));
+
+ return fromPart.toString();
+ }
+
+ private String joinString() {
+ return joinString(tableDefinition.getTablesDefinition());
+ }
+
+ private String joinString(List<JsonTableDefinition> tablesDef) {
+ StringBuilder joinPart = new StringBuilder("");
+
+ if (tablesNameToAlias.size() > 1) {
+ for (JsonTableDefinition t : tablesDef) {
+ joinPart.append(joinString(t));
+ joinPart.append(joinString(t.getTablesDefinition()));
+ }
+ }
+ return joinPart.toString();
+ }
+
+ private String joinString(JsonTableDefinition tableDef) {
+ StringBuilder joinPart = new StringBuilder("\nJOIN ");
+ joinPart.append(tableDef.getTableName())
+ .append(" ")
+ .append(tablesNameToAlias.get(tableDef.getTableName()))
+ .append(" ON ")
+ .append(tablesNameToAlias.get(tableDef.getTableName()))
+ .append(".")
+ .append(new ParentIdColumnDefinition().name())
+ .append(" = ")
+ .append(tablesNameToAlias.get(tableDef.getParentTableName()))
+ .append(".")
+ .append(new IndexColumnDefinition().name());
+
+ return joinPart.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonDelete.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonDelete.java
new file mode 100644
index 0000000..0dd78b0
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonDelete.java
@@ -0,0 +1,100 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DeletedColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import com.megatim.fdxcommons.tools.utils.JsonDataUtil;
+import com.megatim.fdxcommons.tools.utils.JsonTableUtil;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonDelete {
+
+ private final Connection connection;
+ private final Map<Long, Object> matchedData;
+ private final String rootTableName;
+ private final JsonTableDefinition tableDefinition;
+ private final CommonDataProduction dataProduction;
+
+ public JsonDelete(Connection connection, Map<Long, Object> matchedData, String rootTableName, JsonTableDefinition tableDefinition, CommonDataProduction dataProduction) {
+ this.connection = connection;
+ this.matchedData = matchedData;
+ this.rootTableName = rootTableName;
+ this.tableDefinition = tableDefinition;
+ this.dataProduction = dataProduction;
+ }
+
+ public void delete() throws ColumnNotFoundException, SQLException, BadDataValueException, LocalDateTimeValueParseError, Exception {
+ Map<String, Set<Long>> tableToMatchingIndexes = new JsonDataUtil().tableToMatchingIndexes(matchedData, rootTableName);
+ Map<String, List<String>> tableToDirectChildren = new JsonTableUtil(tableDefinition).tableToChildrenTables();
+
+ for (Map.Entry<String, Set<Long>> entry : tableToMatchingIndexes.entrySet()) {
+ Set<Long> indexes = entry.getValue();
+ List<String> childrenTableList = tableToDirectChildren.get(entry.getKey());
+ final String parentTable = entry.getKey();
+ final String parentIdColumn = new ParentIdColumnDefinition().name();
+ final String indexColumn = new IndexColumnDefinition().name();
+
+ if (indexes != null) {
+ QueryCriterion childrenQueryCriterion = queryCriterion(indexes, parentIdColumn);
+ QueryCriterion parentQueryCriterion = queryCriterion(indexes, indexColumn);
+ List<QueryParam> childParams = parameters(childrenQueryCriterion);
+ List<QueryParam> parentParams = parameters(parentQueryCriterion);
+ List<String> columnNames = Arrays.asList(new DeletedColumnDefinition().name(), new DataProductionUpdateIdColumnDefinition().name(), new DateMiseAJourColumnDefinition().name());
+
+ if (childrenTableList != null && childrenTableList.isEmpty()) {
+ for (String table : childrenTableList) {
+ new UpdateQuery(connection, childrenQueryCriterion, table, columnNames, childParams).execute();
+ }
+ }
+ new UpdateQuery(connection, parentQueryCriterion, parentTable, columnNames, parentParams).execute();
+ }
+ }
+ }
+
+ private List<QueryParam> parameters(QueryCriterion queryCriterion) throws Exception {
+ List<QueryParam> params = new ArrayList<>();
+
+ //On ajoute les paramètres de l'application
+ params.add(new QueryParam(new DeletedColumnDefinition().name(), 1));
+ params.add(new QueryParam(new DataProductionUpdateIdColumnDefinition().name(), dataProduction.getId()));
+ params.add(new QueryParam(new DateMiseAJourColumnDefinition().name(), dataProduction.getDateProduction()));
+
+ //On ajoute ensuite les paramètre de la clause WHERE
+ params.addAll(new WhereQueryParameters(queryCriterion).parameters());
+
+ return params;
+ }
+
+ private QueryCriterion queryCriterion(Set<Long> indexes, String columnName) {
+ List<QueryCriterion> criteria = new ArrayList<>();
+ indexes.stream().forEach(i -> criteria.add(new QueryCriterion(columnName, i, Operateur.EQUALS, null, Arrays.asList())));
+
+ return new QueryCriterion(null, null, null, CriteriaLogicConnector.OR, criteria);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxApiInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxApiInsert.java
new file mode 100644
index 0000000..59726d0
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxApiInsert.java
@@ -0,0 +1,41 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.JsonFdxInsert;
+import com.megatim.fdxcommons.tools.database.queries.metadata.DefaultTypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition;
+import java.sql.Connection;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxApiInsert extends JsonFdxInsert {
+
+ public JsonFdxApiInsert(Connection connection, Long dataProductionId) {
+ super(connection, dataProductionId);
+ }
+
+ @Override
+ public long insert(JsonFdxParsedDataIterator parsedDataIterator) throws Exception {
+ List<DefaultTypeFichierDataColumn> dataColumnsToAdd = dataColumnsToAdd();
+ new JsonInsertQuery(connection, parsedDataIterator, dataColumnsToAdd).execute();
+
+ return dataProductionId;
+ }
+
+ private List<DefaultTypeFichierDataColumn> dataColumnsToAdd() {
+ return Arrays.asList(
+ new DefaultTypeFichierDataColumn(new DateCreationColumnDefinition().name(), LocalDateTime.now()),
+ new DefaultTypeFichierDataColumn(new DataProductionIdColumnDefinition().name(), dataProductionId)
+ );
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxInsert.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxInsert.java
new file mode 100644
index 0000000..a35a2f0
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonFdxInsert.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxcommons.tools.database.contrat;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class JsonFdxInsert implements JsonInsert {
+
+ protected final Connection connection;
+ protected final Long dataProductionId;
+
+ public JsonFdxInsert(Connection connection, Long dataProductionId) {
+ this.connection = connection;
+ this.dataProductionId = dataProductionId;
+ }
+
+ @Override
+ public abstract long insert(JsonFdxParsedDataIterator parsedDataIterator) throws Exception;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonInsertQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonInsertQuery.java
new file mode 100644
index 0000000..c9b6930
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonInsertQuery.java
@@ -0,0 +1,144 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.JsonTypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.PreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.queries.metadata.DefaultTypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonApiTypeFichierInsertData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonInsertQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final JsonFdxParsedDataIterator parsedDataIterator;
+ private final List<DefaultTypeFichierDataColumn> dataColumnsToAdd;
+
+ public JsonInsertQuery(Connection connection, JsonFdxParsedDataIterator parsedDataIterator, List<DefaultTypeFichierDataColumn> dataColumnsToAdd) {
+ this.connection = connection;
+ this.parsedDataIterator = parsedDataIterator;
+ this.dataColumnsToAdd = dataColumnsToAdd;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+ List<JsonApiTypeFichierInsertData> rows = parsedDataIterator.rows();
+
+ for (JsonApiTypeFichierInsertData insertMetaData : rows) {
+ String query = insertQueryString(insertMetaData.columnNames(), insertMetaData.tableName(), false);
+
+ TypeFichierDataRow row = insertMetaData.row();
+
+ System.out.println("---------------- parentQuery-----------------------");
+ System.out.println(query);
+ System.out.println("-----------------------------------");
+
+ try ( PreparedStatement statement = connection.prepareStatement(query);) {
+ execute(statement, row, dataColumnsToAdd, null);
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ Long fdxIndex = resultSet.getLong(1);
+ insertChildren(insertMetaData.children(), fdxIndex);
+ }
+ }
+ }
+ return null;
+ }
+
+ private void insertChildren(List<JsonTypeFichierInsertMetaData> data, Long parentId) throws Exception {
+ if (!data.isEmpty()) {
+ for (JsonTypeFichierInsertMetaData insertData : data) {
+ insertChild(insertData, parentId);
+ }
+ }
+
+ }
+
+ private void insertChild(JsonTypeFichierInsertMetaData child, Long parentId) throws Exception {
+ String childQuery = insertQueryString(child.columnNames(), child.tableName(), true);
+ System.out.println("------------------ childQuery---------------------------");
+ System.out.println(childQuery);
+ System.out.println("---------------------------------------------------------");
+
+ try ( PreparedStatement statement = connection.prepareStatement(childQuery);) {
+
+ TypeFichierDataRow row = child.row();
+ execute(statement, row, dataColumnsToAdd, parentId);
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ Long fdxIndex = resultSet.getLong(1);
+ insertChildren(child.children(), fdxIndex);
+ }
+ }
+ }
+
+ private String insertQueryString(List<String> columnNames, String tableName, boolean parentIdPresent) {
+ List<String> insertColumns = new ArrayList<>(columnNames);
+
+ for (DefaultTypeFichierDataColumn dc : dataColumnsToAdd) {
+ insertColumns.add(dc.column());
+ }
+
+ if (parentIdPresent) {
+ insertColumns.add(new ParentIdColumnDefinition().name());// Ajout de la clé du parent
+ }
+ StringBuilder query = new StringBuilder("INSERT INTO " + tableName + "(");
+
+ insertColumns.forEach(column -> query.append(column).append(","));
+
+ query.replace(query.length() - 1, query.length(), ") VALUES(");
+
+ insertColumns.forEach(s -> query.append("?,"));
+
+ query.replace(query.length() - 1, query.length(), ")");
+
+ query.append(" RETURNING ").append(new IndexColumnDefinition().name()).append(";");
+
+ return query.toString();
+ }
+
+ private void execute(PreparedStatement preparedStatement, TypeFichierDataRow row, List<DefaultTypeFichierDataColumn> dataColumnsToAdd, Long parentId) throws SQLException, Exception {
+
+ List<QueryParam> queryParameters = new ArrayList<>();
+
+ if (row != null) {
+ for (TypeFichierDataColumn dataColumn : row.columns()) {
+ queryParameters.add(new QueryParam(dataColumn.column(), dataColumn.value()));
+ }
+ }
+
+ //On ajoute les colonnes de dataColumnsToAdd
+ for (DefaultTypeFichierDataColumn dc : dataColumnsToAdd) {
+ queryParameters.add(new QueryParam(dc.column(), dc.value()));
+ }
+
+ if (parentId != null && parentId != 0L) {
+ queryParameters.add(new QueryParam(new ParentIdColumnDefinition().name(), parentId));//Ajout clé du parent
+ }
+
+ PreparedStatementProcessor statementProcessor = new DefaultPreparedStatementProcessor(0);
+ statementProcessor.process(preparedStatement, queryParameters);
+
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonSelectQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonSelectQuery.java
new file mode 100644
index 0000000..f2ba3ac
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonSelectQuery.java
@@ -0,0 +1,214 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonSelectQuery implements QueryMetaData<Map<Long, Object>> {
+
+ private final JsonTableDefinition tableDefinition;
+ private final QueryCriterion queryCriterion;
+ private final Connection connection;
+ private final Map<String, String> tablesNameToAlias;
+ private final int limit;
+ private final int offset;
+
+ public JsonSelectQuery(JsonTableDefinition tableDefinition, QueryCriterion queryCriterion, Connection connection, Map<String, String> tablesNameToAlias) {
+ this(tableDefinition, queryCriterion, connection, tablesNameToAlias, -1, -1);
+ }
+
+ public JsonSelectQuery(JsonTableDefinition tableDefinition, QueryCriterion queryCriterion, Connection connection, Map<String, String> tablesNameToAlias, int limit, int offset) {
+ this.tableDefinition = tableDefinition;
+ this.queryCriterion = queryCriterion;
+ this.connection = connection;
+ this.tablesNameToAlias = tablesNameToAlias;
+ this.limit = limit;
+ this.offset = offset;
+ }
+
+ @Override
+ public Map<Long, Object> execute() throws Exception {
+ return result();
+ }
+
+ private Map<Long, Object> result() throws NamingException, SQLException {
+ Map<Long, Object> finalData = new HashMap<>();
+ String query = selectString() + fromString() + joinString() + whereString() + pagination();
+ System.out.println("------------------------------------------------------------------------------------");
+ System.out.println(query);
+ System.out.println("------------------------------------------------------------------------------------");
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+ ResultSet resultSet = statement.executeQuery();
+ List<Long> indexes = new ArrayList<>();
+
+ while (resultSet.next()) {
+ indexes.add(resultSet.getLong(new IndexColumnDefinition().name()));
+ }
+ for (Long l : indexes) {
+ Map<String, Object> data = selectData(l, tableDefinition.getTableName());
+
+ for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) {
+ data.put(t.getParentFieldName().toLowerCase(), selectChildren(l, t));
+ }
+ finalData.put(l, data);
+ }
+ }
+ return finalData;
+ }
+
+ private Map<String, Object> selectData(Long index, String tableName) throws SQLException {
+ Map<String, Object> data = new HashMap<>();
+ String query = "SELECT * FROM " + tableName + " WHERE " + new IndexColumnDefinition().name() + " = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ statement.setLong(1, index);
+ ResultSet resultSet = statement.executeQuery();
+
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnCount = metaData.getColumnCount();
+
+ if (resultSet.next()) {
+ for (int i = 1; i <= columnCount; i++) {
+ data.put(metaData.getColumnName(i).trim().toLowerCase(), resultSet.getObject(i));
+ }
+ }
+ }
+ return data;
+ }
+
+ private Map<Long, Object> selectChildren(Long index, JsonTableDefinition tableDef) throws SQLException {
+ Map<Long, Object> finalData = new HashMap<>();
+ String query = "SELECT * FROM " + tableDef.getTableName() + " WHERE " + new ParentIdColumnDefinition().name() + " = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ statement.setLong(1, index);
+ ResultSet resultSet = statement.executeQuery();
+ Map<Long, Object> data = retrieveData(resultSet);
+
+ if (!tableDef.getTablesDefinition().isEmpty()) {
+
+ for (Map.Entry<Long, Object> entry : data.entrySet()) {
+ Map<String, Object> map = new HashMap<>();
+ map.putAll((Map<String, Object>) entry.getValue());
+
+ for (JsonTableDefinition t : tableDef.getTablesDefinition()) {
+ map.put(t.getParentFieldName().toLowerCase(), selectChildren(entry.getKey(), t));
+ }
+ finalData.put(entry.getKey(), map);
+ }
+ } else {
+ finalData.putAll(data);
+ }
+ }
+ return finalData;
+ }
+
+ private Map<Long, Object> retrieveData(ResultSet resultSet) throws SQLException {
+ Map<Long, Object> data = new HashMap<>();
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnCount = metaData.getColumnCount();
+
+ while (resultSet.next()) {
+ Map<String, Object> datum = new HashMap<>();
+ for (int i = 1; i <= columnCount; i++) {
+ datum.put(metaData.getColumnName(i).trim().toLowerCase(), resultSet.getObject(i));
+ }
+ data.put(resultSet.getLong(new IndexColumnDefinition().name()), datum);
+ }
+ return data;
+ }
+
+ private String whereString() {
+ return "\n" + new WhereQueryString(queryCriterion).query();
+ }
+
+ private String pagination() {
+ if (limit > 0 && offset >= 0) {
+ return " LIMIT " + limit + " OFFSET " + offset;
+ }
+ return "";
+ }
+
+ private String fromString() {
+ StringBuilder fromPart = new StringBuilder("\nFROM ");
+ fromPart
+ .append(tableDefinition.getTableName())
+ .append(" ")
+ .append(tablesNameToAlias.get(tableDefinition.getTableName()));
+
+ return fromPart.toString();
+ }
+
+ private String joinString() {
+ return joinString(tableDefinition.getTablesDefinition());
+ }
+
+ private String joinString(List<JsonTableDefinition> tablesDef) {
+ StringBuilder joinPart = new StringBuilder("");
+
+ if (tablesNameToAlias.size() > 1) {
+ for (JsonTableDefinition t : tablesDef) {
+ joinPart.append(joinString(t));
+ joinPart.append(joinString(t.getTablesDefinition()));
+ }
+ }
+ return joinPart.toString();
+ }
+
+ private String joinString(JsonTableDefinition tableDef) {
+ StringBuilder joinPart = new StringBuilder("\nJOIN ");
+ joinPart.append(tableDef.getTableName())
+ .append(" ")
+ .append(tablesNameToAlias.get(tableDef.getTableName()))
+ .append(" ON ")
+ .append(tablesNameToAlias.get(tableDef.getTableName()))
+ .append(".")
+ .append(new ParentIdColumnDefinition().name())
+ .append(" = ")
+ .append(tablesNameToAlias.get(tableDef.getParentTableName()))
+ .append(".")
+ .append(new IndexColumnDefinition().name());
+
+ return joinPart.toString();
+ }
+
+ private String selectString() {
+ return "SELECT " + columnsToSelect();
+ }
+
+ private String columnsToSelect() {
+ StringBuilder columnsToSelect = new StringBuilder("");
+ columnsToSelect
+ .append("DISTINCT(")
+ .append(tablesNameToAlias.get(tableDefinition.getTableName()))
+ .append(".")
+ .append(new IndexColumnDefinition().name())
+ .append(")");
+ return columnsToSelect.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonUpdate.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonUpdate.java
new file mode 100644
index 0000000..9337a33
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/JsonUpdate.java
@@ -0,0 +1,101 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+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.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonDataRowToUpdate;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.utils.JsonDataUtil;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonUpdate {
+
+ private final Connection connection;
+ private final Map<Long, Object> matchedData;
+ private final List<ColumnDefinition> columnsDefinition;
+ private final String rootTableName;
+ private final Map<String, Object> dataToSet;
+ private final CommonDataProduction dataProduction;
+
+ public JsonUpdate(Connection connection, Map<Long, Object> matchedData, List<ColumnDefinition> columnsDefinition, String rootTableName, Map<String, Object> dataToSet, CommonDataProduction dataProduction) {
+ this.connection = connection;
+ this.matchedData = matchedData;
+ this.columnsDefinition = columnsDefinition;
+ this.rootTableName = rootTableName;
+ this.dataToSet = dataToSet;
+ this.dataProduction = dataProduction;
+ }
+
+ public void update() throws ColumnNotFoundException, SQLException, BadDataValueException, LocalDateTimeValueParseError, Exception {
+ Map<String, Map<String, Object>> tableToDataRow = new JsonDataRowToUpdate(dataToSet, rootTableName, columnsDefinition).dataRow();
+ Map<String, Set<Long>> tableToMatchingIndexes = new JsonDataUtil().tableToMatchingIndexes(matchedData, rootTableName);
+
+ for (Map.Entry<String, Map<String, Object>> entry : tableToDataRow.entrySet()) {
+ Set<Long> indexes = tableToMatchingIndexes.get(entry.getKey());
+
+ if (indexes != null) {
+ QueryCriterion queryCriterion = queryCriterion(indexes);
+ List<QueryParam> params = parameters(entry.getValue(), queryCriterion);
+
+ new UpdateQuery(connection, queryCriterion, entry.getKey(), columnsName(entry.getValue()), params).execute();
+ }
+ }
+ }
+
+ private List<QueryParam> parameters(Map<String, Object> updateData, QueryCriterion queryCriterion) throws Exception {
+ List<QueryParam> params = new ArrayList<>();
+
+ //On ajoute les paramètres de la clause SET
+ updateData.forEach((k, v) -> {
+ params.add(new QueryParam(k, v));
+ });
+
+ //On ajoute les paramètres de l'application
+ params.add(new QueryParam(new DataProductionUpdateIdColumnDefinition().name(), dataProduction.getId()));
+ params.add(new QueryParam(new DateMiseAJourColumnDefinition().name(), dataProduction.getDateProduction()));
+ //On ajoute ensuite les paramètre de la clause WHERE
+ params.addAll(new WhereQueryParameters(queryCriterion).parameters());
+
+ return params;
+ }
+
+ private QueryCriterion queryCriterion(Set<Long> indexes) {
+ List<QueryCriterion> criteria = new ArrayList<>();
+ indexes.stream().forEach(i -> criteria.add(new QueryCriterion(new IndexColumnDefinition().name(), i, Operateur.EQUALS, null, Arrays.asList())));
+
+ return new QueryCriterion(null, null, null, CriteriaLogicConnector.OR, criteria);
+ }
+
+ private List<String> columnsName(Map<String, Object> data) {
+ List<String> columnsName = new ArrayList<>();
+ columnsName.addAll(data.keySet().stream().collect(Collectors.toList()));
+ columnsName.add(new DataProductionUpdateIdColumnDefinition().name());
+ columnsName.add(new DateMiseAJourColumnDefinition().name());
+
+ return columnsName;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/LatestDataProductionTokenQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/LatestDataProductionTokenQuery.java
new file mode 100644
index 0000000..d918c1d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/LatestDataProductionTokenQuery.java
@@ -0,0 +1,50 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class LatestDataProductionTokenQuery {
+
+ private final Connection connection;
+ private final String referentielVersion;
+ private final String codeTypeFichier;
+
+ public LatestDataProductionTokenQuery(Connection connection, String referentielVersion, String codeTypeFichier) {
+ this.connection = connection;
+ this.referentielVersion = referentielVersion;
+ this.codeTypeFichier = codeTypeFichier;
+ }
+
+ public String execute() throws SQLException {
+ try ( PreparedStatement stmt = connection.prepareStatement(queryString())) {
+ stmt.setString(1, codeTypeFichier);
+ stmt.setString(2, referentielVersion);
+ stmt.setString(3, codeTypeFichier);
+ stmt.setString(4, referentielVersion);
+
+ ResultSet result = stmt.executeQuery();
+
+ if (result.next()) {
+ return result.getString(1);
+ }
+ return null;
+ }
+ }
+
+ private String queryString() {
+ String subQuery = "SELECT MAX(id) FROM dataproduction WHERE codetypefichier = ?"
+ + " AND referentielversion = ? ";
+ return "SELECT token FROM dataproduction WHERE codetypefichier = ?"
+ + " AND referentielversion = ? AND ID IN (" + subQuery + ")";
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/MaxDataProductionIdQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/MaxDataProductionIdQuery.java
new file mode 100644
index 0000000..67f8ce5
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/MaxDataProductionIdQuery.java
@@ -0,0 +1,47 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MaxDataProductionIdQuery {
+
+ private final String tableName;
+ private final Connection connection;
+
+ public MaxDataProductionIdQuery(String tableName, Connection connection) {
+ this.tableName = tableName;
+ this.connection = connection;
+ }
+
+ public Long execute() throws SQLException {
+ Long max = 0L;
+
+ try ( PreparedStatement statement = connection.prepareStatement(maxQueryString())) {
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ max = resultSet.getLong(1);
+ }
+ }
+ return max;
+ }
+
+ private String maxQueryString() {
+ return "SELECT id FROM dataproduction"
+ + " WHERE statutdataproduction IN('" + StatutDataProduction.A_CONSOMMER + "', '" + StatutDataProduction.CONSOMME + "')"
+ + " AND id IN (SELECT DISTINCT " + new DataProductionIdColumnDefinition().name() + " FROM " + tableName + ")"
+ + " ORDER BY id DESC";
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/PermanentDeleteQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/PermanentDeleteQuery.java
new file mode 100644
index 0000000..d3af1e8
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/PermanentDeleteQuery.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+/**
+ * @author Gabuntu
+ */
+public class PermanentDeleteQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final String tableName;
+
+ public PermanentDeleteQuery(String tableName, Connection connection, QueryCriterion queryCriterion) {
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.tableName = tableName;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+ System.out.println(permanentDeleteQuery());
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+
+ try (PreparedStatement statement = connection.prepareStatement(permanentDeleteQuery())) {
+
+ connection.setAutoCommit(false);
+
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+ statement.execute();
+
+ connection.commit();
+
+ return null;
+ }
+ }
+
+ private String permanentDeleteQuery() throws Exception {
+ return "DELETE FROM " + tableName + " " + new WhereQueryString(queryCriterion).query();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectDataProductionQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectDataProductionQuery.java
new file mode 100644
index 0000000..0cd79fc
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectDataProductionQuery.java
@@ -0,0 +1,35 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SelectDataProductionQuery {
+
+ private final Connection connection;
+
+ public SelectDataProductionQuery(Connection connection) {
+ this.connection = connection;
+ }
+
+ public boolean dataProductionExists(Long id) throws SQLException {
+ String query = "SELECT COUNT(*) FROM DATAPRODUCTION WHERE id = " + id;
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ ResultSet resultSet = statement.executeQuery();
+ if (resultSet.next()) {
+ return resultSet.getLong(1) > 0;
+ }
+ return false;
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectQuery.java
new file mode 100644
index 0000000..313ea90
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/SelectQuery.java
@@ -0,0 +1,145 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.SelectQueryResult;
+import com.megatim.fdxcommons.tools.database.queries.metadata.WhereQueryParameters;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumnData;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.TokenColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class SelectQuery implements QueryMetaData<SelectQueryResult> {
+
+ private final String tableName;
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final List<String> selectColumns;
+ private final int limit;
+ private final boolean withCustomColumns;
+ private final int offset;
+
+ public SelectQuery(String tableName, Connection connection, QueryCriterion queryCriterion, List<String> selectColumns, boolean withCustomColumns) {
+ this(tableName, connection, queryCriterion, selectColumns, -1, -1, withCustomColumns);
+ }
+
+ public SelectQuery(String tableName, Connection connection, QueryCriterion queryCriterion, List<String> selectColumns, int limit, int offset, boolean withCustomColumns) {
+ this.tableName = tableName;
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.selectColumns = selectColumns;
+ this.limit = limit;
+ this.offset = offset;
+ this.withCustomColumns = withCustomColumns;
+ }
+
+ @Override
+ public SelectQueryResult execute() throws Exception {
+ return result();
+ }
+
+ private SelectQueryResult result() throws NamingException, SQLException {
+ String query = selectQuery();
+ System.out.println("------------------------------------------");
+ System.out.println(query);
+ System.out.println("------------------------------------------------");
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ new DefaultPreparedStatementProcessor().process(statement, new WhereQueryParameters(queryCriterion).parameters());
+
+ long rowCount = 1;
+
+ ResultSet resultSet = statement.executeQuery();
+ ResultSetMetaData metaData = resultSet.getMetaData();
+ int columnCount = metaData.getColumnCount();
+
+ List<FdxTableRow> rows = new ArrayList<>();
+
+ int lastIndexRead = 0;
+
+ FdxApiColumnDefinitions apiColumnDefinitions = new FdxApiColumnDefinitions();
+ FdxConsultationColumnDefinitions fdxConsColumnDefinitions = new FdxConsultationColumnDefinitions();
+ final String tokenColumn = new TokenColumnDefinition().name();
+
+ while (resultSet.next()) {
+
+ List<FdxTableColumnData> data = new ArrayList<>();
+
+ for (int i = 1; i <= columnCount; i++) {
+
+ String name = metaData.getColumnName(i).trim();
+ Object value = resultSet.getObject(i);
+// int sqlDataType = metaData.getColumnType(i);
+
+ if (!name.equals(tokenColumn)) {
+ if (withCustomColumns) {
+ data.add(new FdxTableColumnData(value, name, i));
+ } else {
+ if (!apiColumnDefinitions.isAppColumnDefinition(name) && !fdxConsColumnDefinitions.isAppColumnDefinition(name)) {
+ data.add(new FdxTableColumnData(value, name, i));
+ }
+ }
+ if (apiColumnDefinitions.isIndexColumn(name)) {
+ int currentIndex = Integer.parseInt(value.toString());
+ if (currentIndex > lastIndexRead) {
+ lastIndexRead = currentIndex;
+ }
+ }
+ }
+ }
+
+ rows.add(new FdxTableRow(rowCount++, data));
+ }
+ return new SelectQueryResult(lastIndexRead, rows);
+ }
+ }
+
+ private String selectQuery() {
+
+ StringBuilder query = new StringBuilder("SELECT ");
+
+ if (selectColumns.isEmpty()) {
+
+ query.append(" * ");
+
+ } else {
+
+ selectColumns.forEach(c -> query.append(c.toLowerCase()).append(","));
+ query.replace(query.length() - 1, query.length(), ""); //retirer la sernière virgule
+
+ }
+
+ query
+ .append(" FROM ")
+ .append(tableName);
+
+ query.append(new WhereQueryString(queryCriterion).query());
+ query.append(" ORDER BY ").append(new IndexColumnDefinition().name());
+
+ if (limit > 0 && offset >= 0) {
+
+ query
+ .append(" LIMIT ")
+ .append(limit)
+ .append(" OFFSET ")
+ .append(offset);
+ }
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/TableDefinitionQueries.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/TableDefinitionQueries.java
new file mode 100644
index 0000000..60c4dd4
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/TableDefinitionQueries.java
@@ -0,0 +1,169 @@
+/*
+ * 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.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationIndexColumnDefinition;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TableDefinitionQueries {
+
+ private final String tableName;
+ private final Connection connection;
+
+ public TableDefinitionQueries(String tableName, Connection connection) {
+ this.tableName = tableName;
+ this.connection = connection;
+ }
+
+ public boolean tableExists() throws SQLException {
+ Long nb = 0L;
+
+ try ( PreparedStatement statement = connection.prepareStatement(tableExistsQuery())) {
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ nb = resultSet.getLong(1);
+ }
+ }
+ return nb == 1;
+ }
+
+ public boolean constraintExists(String constraintName) throws SQLException {
+ Long nb = 0L;
+
+ try ( PreparedStatement statement = connection.prepareStatement(constraintExistsQuery(constraintName))) {
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ nb = resultSet.getLong(1);
+ }
+ }
+ return nb == 1;
+ }
+
+ public boolean columnExists(String columnName) throws SQLException {
+ Long nb = 0L;
+
+ try ( PreparedStatement statement = connection.prepareStatement(columnExistsQuery(columnName))) {
+ ResultSet resultSet = statement.executeQuery();
+
+ if (resultSet.next()) {
+ nb = resultSet.getLong(1);
+ }
+ }
+ return nb == 1;
+ }
+
+ private String columnExistsQuery(String columnName) {
+ return "SELECT COUNT(column_name)"
+ + " FROM information_schema.columns"
+ + " WHERE table_name = '" + tableName + "' AND column_name = '" + columnName + "'";
+ }
+
+ private String constraintExistsQuery(String constraintName) {
+ return "SELECT COUNT(*) FROM pg_constraint WHERE conname = '" + constraintName + "'";
+ }
+
+ private String tableExistsQuery() {
+ return "SELECT COUNT(table_name)"
+ + " FROM information_schema.tables"
+ + " WHERE table_schema LIKE 'public' AND table_type LIKE 'BASE TABLE' AND table_name = '" + tableName + "'";
+ }
+
+ public void addAppColumn(AppColumnDefinition appColumn) throws SQLException {
+
+ try ( Statement stmt = connection.createStatement()) {
+ String query = addAppColumnQuery(appColumn).toString();
+ stmt.execute(query);
+ }
+ }
+
+ public void dropAppColumn(AppColumnDefinition appColumn) throws SQLException {
+ String query = dropColumnQuery(appColumn);
+
+ try ( Statement stmt = connection.createStatement()) {
+ stmt.execute(query);
+ }
+ }
+
+ public void dropConstraint(String constraintName) throws SQLException {
+ String query = dropConstraintQuery(constraintName);
+
+ try ( Statement stmt = connection.createStatement()) {
+ stmt.execute(query);
+ }
+ }
+
+ public void addPkConstraint(String constraintName) throws SQLException {
+ String query = addPkConstraintQuery(constraintName);
+
+ try ( Statement stmt = connection.createStatement()) {
+ stmt.execute(query);
+ }
+ }
+
+ private String dropColumnQuery(AppColumnDefinition column) {
+ StringBuilder query = new StringBuilder("ALTER TABLE ");
+
+ query
+ .append(tableName)
+ .append(" DROP COLUMN IF EXISTS ")
+ .append(column.name())
+ .append(";");
+
+ return query.toString();
+ }
+
+ private String dropConstraintQuery(String constraintName) {
+ StringBuilder query = new StringBuilder();
+
+ query.append("ALTER TABLE ")
+ .append(tableName)
+ .append(" DROP CONSTRAINT IF EXISTS ")
+ .append(constraintName)
+ .append(";");
+
+ return query.toString();
+ }
+
+ private String addPkConstraintQuery(String constraintName) {
+ StringBuilder query = new StringBuilder();
+
+ query.append("ALTER TABLE ")
+ .append(tableName)
+ .append(" ADD CONSTRAINT ")
+ .append(constraintName)
+ .append(" PRIMARY KEY(")
+ .append(new FdxConsultationIndexColumnDefinition().name())
+ .append(");");
+
+ return query.toString();
+ }
+
+ private StringBuilder addAppColumnQuery(AppColumnDefinition column) {
+ StringBuilder query = new StringBuilder("ALTER TABLE ");
+ query
+ .append(tableName)
+ .append(" ADD COLUMN IF NOT EXISTS ")
+ .append(column.name())
+ .append(" ")
+ .append(column.type())
+ .append(column.isNull() ? " NULL " : " NOT NULL ");
+
+ if (column.defaultValue() != null) {
+ query.append("DEFAULT ").append(column.defaultValue());
+ }
+ return query;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateDataProductionQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateDataProductionQuery.java
new file mode 100644
index 0000000..06a591b
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateDataProductionQuery.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class UpdateDataProductionQuery {
+
+ private final Connection connection;
+ private final CommonDataProduction dataProduction;
+
+ public UpdateDataProductionQuery(CommonDataProduction dataProduction, Connection connection) {
+ this.connection = connection;
+ this.dataProduction = dataProduction;
+ }
+
+ public void execute() throws SQLException {
+ try (PreparedStatement statement = connection.prepareStatement(queryString())) {
+ statement.setString(1, dataProduction.getStatutDataProduction().name());
+ statement.setLong(2, dataProduction.getNbreElements());
+ statement.setLong(3, dataProduction.getId());
+ statement.executeUpdate();
+ }
+ }
+
+ private String queryString() {
+ String query = "UPDATE dataproduction SET statutdataproduction = ? , nbreelements = ? WHERE id = ?";
+ return query;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateQuery.java
new file mode 100644
index 0000000..e09f0da
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/UpdateQuery.java
@@ -0,0 +1,69 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class UpdateQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final QueryCriterion queryCriterion;
+ private final String tableName;
+ private final List<String> columnNames;
+ private final List<QueryParam> params;
+
+ public UpdateQuery(Connection connection, QueryCriterion queryCriterion, String tableName, List<String> columnNames, List<QueryParam> params) {
+ this.connection = connection;
+ this.queryCriterion = queryCriterion;
+ this.tableName = tableName;
+ this.columnNames = columnNames;
+ this.params = params;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+ System.out.println(updateQuery());
+ System.out.println("<----------------------------------------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(updateQuery())) {
+ new DefaultPreparedStatementProcessor().process(statement, params);
+ statement.execute();
+ }
+
+ return null;
+ }
+
+ private String updateQuery() throws Exception {
+ return "UPDATE " + tableName + " " + setQueryPart() + " " + new WhereQueryString(queryCriterion).query();
+ }
+
+ private String setQueryPart() throws Exception {
+
+ List<String> columnsToUpdate = new ArrayList<>(columnNames);
+
+ StringBuilder query = new StringBuilder("SET ");
+ int index = 0;
+
+ for (String column : columnsToUpdate) {
+ if ((index + 1) < columnsToUpdate.size()) {
+ query.append(column).append(" = ? ,");
+ } else {
+ query.append(column).append(" = ?");
+ }
+ index++;
+ }
+ return query.toString();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java
new file mode 100644
index 0000000..5f18449
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/WhereQueryString.java
@@ -0,0 +1,160 @@
+package com.megatim.fdxcommons.tools.database.queries;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NOT_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class WhereQueryString {
+
+ private final QueryCriterion queryCriterion;
+
+ public WhereQueryString(QueryCriterion queryCriterion) {
+ this.queryCriterion = queryCriterion;
+ }
+
+ public String query() {
+ StringBuilder query = new StringBuilder("");
+ if (queryCriterion != null) {
+ query
+ .append(" WHERE ")
+ .append(buildQuery(queryCriterion));
+ }
+ return query.toString();
+ }
+
+ private String buildQuery(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder();
+
+ if (criterion.getSubCriteria().isEmpty()) {
+
+ switch (criterion.getOperateur()) {
+ case EQUALS:
+ case NOT_EQUALS:
+ case LIKE:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ query.append(buildQueryWithSingleParameter(criterion));
+ break;
+ case BETWEEN:
+ case NOT_BETWEEN:
+ query.append(buildBetweenQuery(criterion));
+ break;
+ case IS_NOT_NULL:
+ case IS_NULL:
+ query.append(buildQueryWithoutParameter(criterion));
+ break;
+ case NOT_IN:
+ case IN:
+ query.append(buildQueryWithMultipleParameters(criterion));
+ break;
+ }
+
+ } else {
+
+ CriteriaLogicConnector criteriaLogicConnector = criterion.getCriteriaLogicConnector();
+ int size = criterion.getSubCriteria().size();
+ int index = 0;
+
+ for (QueryCriterion c : criterion.getSubCriteria()) {
+ query
+ .append("(")
+ .append(buildQuery(c))
+ .append(")");
+
+ if ((++index) < size) {
+ query.append(criteriaLogicConnector.equals(CriteriaLogicConnector.AND) ? " AND " : " OR ");
+ }
+
+ }
+
+ }
+
+ return query.toString();
+ }
+
+ private String buildQueryWithoutParameter(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue());
+ return query.toString();
+ }
+
+ private String buildQueryWithSingleParameter(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ if (criterion.getOperateur().equals(Operateur.LIKE)) {
+ query
+ .append("LOWER(")
+ .append(criterion.getNomColonne())
+ .append(") LIKE LOWER(?)");
+ } else {
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ?");
+ }
+
+ return query.toString();
+ }
+
+ private String buildBetweenQuery(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ? ")
+ .append(" AND ")
+ .append(" ? ");
+ return query.toString();
+ }
+
+ private String buildQueryWithMultipleParameters(QueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+
+ query
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append("(");
+
+ List values = (List) criterion.getCriteriaValue();
+
+ int size = values.size();
+ for (int i = 0; i < size; i++) {
+
+ if ((i + 1) < size) {
+ query.append("?,");
+ } else {
+ query.append("?");
+ }
+
+ }
+
+ query.append(")");
+
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JpqlWhereQueryString.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JpqlWhereQueryString.java
new file mode 100644
index 0000000..11632b2
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JpqlWhereQueryString.java
@@ -0,0 +1,186 @@
+package com.megatim.fdxcommons.tools.database.queries.jpql;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NOT_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryCriterion;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ *
+ * @author lenovo
+ */
+public class JpqlWhereQueryString {
+
+ private final JpqlQueryCriterion queryCriterion;
+ private final String classAlias;
+ private final AtomicInteger rang = new AtomicInteger(1);
+
+ public JpqlWhereQueryString(JpqlQueryCriterion queryCriterion, String classAlias) {
+ this.queryCriterion = queryCriterion;
+ this.classAlias = classAlias;
+ }
+
+ public String query() throws BadQueryCriteriaException {
+ StringBuilder query = new StringBuilder("");
+
+ if (queryCriterion != null) {
+ query
+ .append(" WHERE ")
+ .append(buildQuery(queryCriterion));
+ }
+ return query.toString();
+ }
+
+ private String buildQuery(JpqlQueryCriterion criterion) throws BadQueryCriteriaException {
+ StringBuilder query = new StringBuilder();
+
+ if (criterion.getSubCriteria().isEmpty()) {
+
+ switch (criterion.getOperateur()) {
+ case EQUALS:
+ case NOT_EQUALS:
+ case LIKE:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ query.append(buildQueryWithSingleParameter(criterion));
+ break;
+ case BETWEEN:
+ case NOT_BETWEEN:
+ query.append(buildBetweenQuery(criterion));
+ break;
+ case IS_NOT_NULL:
+ case IS_NULL:
+ query.append(buildQueryWithoutParameter(criterion));
+ break;
+ case NOT_IN:
+ case IN:
+ query.append(buildQueryWithMultipleParameters(criterion));
+ break;
+ }
+
+ } else {
+
+ CriteriaLogicConnector criteriaLogicConnector = criterion.getCriteriaLogicConnector();
+ if (criteriaLogicConnector == null) {
+ throw new BadQueryCriteriaException("Critère non valide : Connecteur logique absent");
+ }
+ int size = criterion.getSubCriteria().size();
+ int index = 0;
+
+ for (JpqlQueryCriterion c : criterion.getSubCriteria()) {
+ query
+ .append("(")
+ .append(buildQuery(c))
+ .append(")");
+
+ if ((++index) < size) {
+ query.append(criteriaLogicConnector.equals(CriteriaLogicConnector.AND) ? " AND " : " OR ");
+ }
+
+ }
+
+ }
+
+ return query.toString();
+ }
+
+ private String buildQueryWithoutParameter(JpqlQueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(classAlias)
+ .append(".")
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue());
+ return query.toString();
+ }
+
+ private String buildQueryWithSingleParameter(JpqlQueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ if (criterion.getOperateur().equals(Operateur.LIKE)) {
+ query
+ .append("LOWER(")
+ .append(classAlias)
+ .append(".")
+ .append(criterion.getNomColonne())
+ .append(") LIKE LOWER(?")
+ .append(rang.getAndIncrement())
+ .append(")");
+ } else {
+ query
+ .append(classAlias)
+ .append(".")
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ?")
+ .append(rang.getAndIncrement())
+ .append(" ");
+ }
+
+ return query.toString();
+ }
+
+ private String buildBetweenQuery(JpqlQueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+ query
+ .append(classAlias)
+ .append(".")
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append(" ?")
+ .append(rang.getAndIncrement())
+ .append(" AND ")
+ .append(" ?")
+ .append(rang.getAndIncrement())
+ .append(" ");
+ return query.toString();
+ }
+
+ private String buildQueryWithMultipleParameters(JpqlQueryCriterion criterion) {
+ StringBuilder query = new StringBuilder("");
+
+ query
+ .append(classAlias)
+ .append(".")
+ .append(criterion.getNomColonne())
+ .append(" ")
+ .append(criterion.getOperateur().getValue())
+ .append("(");
+
+ List values = (List) criterion.getCriteriaValue();
+
+ int size = values.size();
+ for (int i = 0; i < size; i++) {
+
+ if ((i + 1) < size) {
+ query.append("?").append(rang.getAndIncrement()).append(", ");
+ } else {
+ query.append("?").append(rang.getAndIncrement());
+ }
+
+ }
+
+ query.append(")");
+
+ return query.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JqplQueryString.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JqplQueryString.java
new file mode 100644
index 0000000..6c423ad
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/jpql/JqplQueryString.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxcommons.tools.database.queries.jpql;
+
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryCriterion;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JqplQueryString {
+
+ private final String simpleClassName;
+
+ private final JpqlQueryCriterion queryCriterion;
+
+ public JqplQueryString(String simpleClassName, JpqlQueryCriterion queryCriterion) {
+ this.simpleClassName = simpleClassName;
+ this.queryCriterion = queryCriterion;
+ }
+
+ public String selectQuery(List<OrderByDefinition> orderByFields) throws Exception {
+ String classAlias = simpleClassName.toLowerCase().charAt(0) + "";
+ String selectFromQueryPart = "SELECT " + classAlias + " FROM " + simpleClassName + " " + classAlias + " ";
+ String whereQueryPart = new JpqlWhereQueryString(queryCriterion, classAlias).query();
+ String query = selectFromQueryPart + " " + whereQueryPart + " " + orderByClause(classAlias, orderByFields);
+ return query;
+ }
+
+ public String countQuery() throws Exception {
+ String classAlias = simpleClassName.toLowerCase().charAt(0) + "";
+ String selectFromQueryPart = "SELECT COUNT(*) FROM " + simpleClassName + " " + classAlias + " ";
+ String whereQueryPart = new JpqlWhereQueryString(queryCriterion, classAlias).query();
+ String query = selectFromQueryPart + " " + whereQueryPart;
+ return query;
+ }
+
+ private String orderByClause(String classAlias, List<OrderByDefinition> orderByFields) {
+ StringBuilder orderBy = new StringBuilder("ORDER BY ");
+ if (orderByFields == null || orderByFields.isEmpty()) {
+ return "";
+ }
+
+ for (OrderByDefinition def : orderByFields) {
+ if (def.getFieldName() != null && !def.getFieldName().isEmpty()) {
+ String orderByType = def.getOrderByType() != null ? def.getOrderByType().name() : OrderByType.ASC.name();
+ orderBy.append(classAlias).append(".").append(def.getFieldName()).append(" ").append(orderByType).append(",");
+ }
+ }
+ orderBy.replace(orderBy.length() - 1, orderBy.length(), "");//retirer la dernière virgule
+ return orderBy.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/json/CreateJsonTableIfNotExistQuery.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/json/CreateJsonTableIfNotExistQuery.java
new file mode 100644
index 0000000..cd4017c
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/json/CreateJsonTableIfNotExistQuery.java
@@ -0,0 +1,161 @@
+/*
+ * 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.fdxcommons.tools.database.queries.json;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.ALPHANUMERIQUE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DATE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DECIMAL;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.NUMERIQUE;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.BadColumnTypeException;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.AppColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.ParentIdColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import java.sql.Connection;
+import java.sql.JDBCType;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CreateJsonTableIfNotExistQuery implements QueryMetaData<Void> {
+
+ private final Connection connection;
+ private final AppColumnDefinitions appColumnDefinitions;
+ private final JsonTableDefinition tableDefinition;
+ private final List<String> queries = new ArrayList<>();
+
+ public CreateJsonTableIfNotExistQuery(Connection connection, AppColumnDefinitions appColumnDefinitions, JsonTableDefinition tableDefinition) {
+ this.connection = connection;
+ this.appColumnDefinitions = appColumnDefinitions;
+ this.tableDefinition = tableDefinition;
+ }
+
+ @Override
+ public Void execute() throws Exception {
+ query(tableDefinition);
+
+ for (String query : queries) {
+ System.out.println(query);
+ }
+
+ try ( Statement stmt = connection.createStatement()) {
+ for (String query : queries) {
+ stmt.execute(query);
+ }
+ }
+ return null;
+ }
+
+ private void query(JsonTableDefinition jsonTableDefinition) throws BadColumnTypeException {
+ StringBuilder query = new StringBuilder("CREATE TABLE IF NOT EXISTS " + jsonTableDefinition.getTableName() + "(");
+ List<AppColumnDefinition> primaryKeys = new ArrayList<>();
+
+ for (ColumnDefinition colDef : jsonTableDefinition.getColumnDefs()) {
+ query.append(colDef.getName().toLowerCase()).append(" ").append(sqlColumnType(colDef));
+ if (colDef.isRequired()) {
+ query.append(" NOT NULL");
+ }
+ query.append(", ");
+ }
+
+ for (AppColumnDefinition appColumnDefinition : appColumnDefinitions.appColumns()) {
+ query.append(columnDefinitonString(appColumnDefinition)).append(", ");
+
+ if (appColumnDefinition.isPrimaryKey()) {
+ primaryKeys.add(appColumnDefinition);
+ }
+ }
+ //Defintion de la colonne fdx_parent_id
+ if (jsonTableDefinition.getParentTableName() != null) {
+ query.append(columnDefinitonString(new ParentIdColumnDefinition())).append(", ");
+ }
+
+ if (!primaryKeys.isEmpty()) {
+ query.append(" PRIMARY KEY(");
+ primaryKeys.stream().forEach(pk -> query.append(pk.name()).append(", "));
+
+ //Retirer la dernière virgule
+ query.replace(query.length() - 2, query.length(), ")");
+ } else {
+ //Retirer la dernière virgule
+ query.replace(query.length() - 2, query.length(), "");
+ }
+
+ //Contrainte de clé étrangère sur fdx_parent_id
+ if (jsonTableDefinition.getParentTableName() != null) {
+ query.append(parentIdDefintion(jsonTableDefinition.getParentTableName(), new ParentIdColumnDefinition().name(), new IndexColumnDefinition().name()));
+ }
+ query.append(");");
+
+ queries.add(query.toString());
+
+ if (!jsonTableDefinition.getTablesDefinition().isEmpty()) {
+ for (JsonTableDefinition tableDef : jsonTableDefinition.getTablesDefinition()) {
+ query(tableDef);
+ }
+ }
+ }
+
+ private String parentIdDefintion(String parentTableName, String parentIdColumnName, String indexColumnName) {
+ StringBuilder builder = new StringBuilder("");
+ builder.append(", FOREIGN KEY (").append(parentIdColumnName).append(") REFERENCES ").append(parentTableName).append("(").append(indexColumnName).append(")");
+
+ return builder.toString();
+ }
+
+ private String sqlColumnType(ColumnDefinition colDef) throws BadColumnTypeException {
+ switch (TypeDonnee.fromValeur(colDef.getTypeDonnee())) {
+ case ALPHANUMERIQUE:
+ return jdbcType(colDef) + "(" + colDef.getTaille() + ")";
+ case NUMERIQUE:
+ return jdbcType(colDef).getName();
+ case DATE:
+ String requiredDefinition = colDef.isRequired() ? " NOT NULL" : " NULL";
+ return jdbcType(colDef).getName() + requiredDefinition;
+ case DECIMAL:
+ return jdbcType(colDef) + "(" + colDef.getTaille() + "," + 4 + ")";
+ }
+ throw new BadColumnTypeException("Type de colonne incorrect " + colDef.getTypeDonnee());
+ }
+
+ private JDBCType jdbcType(ColumnDefinition colDef) throws BadColumnTypeException {
+ switch (TypeDonnee.fromValeur(colDef.getTypeDonnee())) {
+ case NUMERIQUE:
+ return colDef.getTaille() < 5 ? JDBCType.SMALLINT : JDBCType.BIGINT;
+ case DECIMAL:
+ return JDBCType.DECIMAL;
+ case DATE:
+ return JDBCType.TIMESTAMP;
+ case ALPHANUMERIQUE:
+ return JDBCType.VARCHAR;
+ }
+ throw new BadColumnTypeException("Type de colonne incorrect " + colDef.getName());
+ }
+
+ private String columnDefinitonString(AppColumnDefinition column) throws BadColumnTypeException {
+ StringBuilder definition = new StringBuilder();
+ definition
+ .append(column.name().toLowerCase())
+ .append(" ")
+ .append(column.type())
+ .append(" ")
+ .append(column.isNull() ? "NULL " : "NOT NULL ");
+
+ if (column.defaultValue() != null) {
+ definition
+ .append("DEFAULT ")
+ .append(column.defaultValue());
+ }
+ return definition.toString();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java
new file mode 100644
index 0000000..017d2fe
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/AliasedQueryCriterion.java
@@ -0,0 +1,113 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AliasedQueryCriterion {
+
+ private final JsonTableDefinition tableDefinition;
+ private final QueryCriterion queryCriterion;
+ private final Map<String, String> tablesNameToAlias;
+ private final FdxApiColumnDefinitions apiColumnDefinitions = new FdxApiColumnDefinitions();
+ private final FdxConsultationColumnDefinitions fdxConsColumnDefinitions = new FdxConsultationColumnDefinitions();
+
+ public AliasedQueryCriterion(JsonTableDefinition tableDefinition, QueryCriterion queryCriterion, Map<String, String> tablesNameToAlias) {
+ this.tableDefinition = tableDefinition;
+ this.queryCriterion = queryCriterion;
+ this.tablesNameToAlias = tablesNameToAlias;
+ }
+
+ public QueryCriterion aliasedQueryCriterion() {
+ return queryCriterion != null ? aliasedQueryCriterion(queryCriterion) : null;
+ }
+
+ private QueryCriterion aliasedQueryCriterion(QueryCriterion criterion) {
+ if (criterion == null) {
+ return null;
+ }
+ if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty() && criterion.getCriteriaLogicConnector() != null) {
+ List<QueryCriterion> subCriteria = new ArrayList<>();
+
+ for (QueryCriterion qc : criterion.getSubCriteria()) {
+ QueryCriterion parseCriterion = aliasedQueryCriterion(qc);
+
+ if (parseCriterion != null) {
+ subCriteria.add(parseCriterion);
+ }
+ }
+ if (!subCriteria.isEmpty()) {
+ return new QueryCriterion(null,
+ null,
+ null,
+ criterion.getCriteriaLogicConnector(),
+ subCriteria
+ );
+ }
+ } else if ((criterion.getSubCriteria() == null || criterion.getSubCriteria().isEmpty())) {
+ return new QueryCriterion(columnFullQualifiedName(criterion.getNomColonne()),
+ criterion.getCriteriaValue(),
+ criterion.getOperateur(),
+ null,
+ Arrays.asList()
+ );
+ }
+ return null;
+ }
+
+ private String tableName(String nomColonne) {
+ if (apiColumnDefinitions.isAppColumnDefinition(nomColonne) || fdxConsColumnDefinitions.isAppColumnDefinition(nomColonne)) {
+ return tableDefinition.getTableName();
+ } else if (tableDefinition.getColumnDefs().stream().filter(c -> c.getName().equalsIgnoreCase(nomColonne)).findFirst().isPresent()) {
+ return tableDefinition.getTableName();
+ } else {
+ return tableName(nomColonne, tableDefinition.getTablesDefinition());
+ }
+ }
+
+ private String tableName(String nomColonne, List<JsonTableDefinition> tablesDef) {
+ String tableName = null;
+ for (JsonTableDefinition t : tablesDef) {
+ tableName = tableName(nomColonne, t);
+
+ if (tableName != null) {
+ return tableName;
+ }
+ }
+ return tableName;
+ }
+
+ private String columnFullQualifiedName(String nomColonne) {
+ String[] nomColonneArray = nomColonne.split("\\.");
+ String finalNomColonne = nomColonneArray[nomColonneArray.length - 1];
+ String tableName = tableName(finalNomColonne);
+
+ return tablesNameToAlias.get(tableName) + "." + finalNomColonne;
+ }
+
+ private String tableName(String nomColonne, JsonTableDefinition t) {
+ if (apiColumnDefinitions.isAppColumnDefinition(nomColonne) || fdxConsColumnDefinitions.isAppColumnDefinition(nomColonne)) {
+ return t.getTableName();
+ } else if (t.getColumnDefs().stream().filter(c -> c.getName().equalsIgnoreCase(nomColonne)).findFirst().isPresent()) {
+ return t.getTableName();
+ } else {
+ if (t.getTablesDefinition().isEmpty()) {
+ return null;
+ } else {
+ return tableName(nomColonne, t.getTablesDefinition());
+ }
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataColumn.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataColumn.java
new file mode 100644
index 0000000..67eedbf
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataColumn.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ApiTypeFichierDataColumn implements TypeFichierDataColumn {
+
+ final String columnName;
+ final Object value;
+
+ public ApiTypeFichierDataColumn(String columnName, Object value) {
+ this.columnName = columnName;
+ this.value = value;
+ }
+
+ @Override
+ public String column() {
+ return columnName;
+ }
+
+ @Override
+ public Object value() {
+ return value;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataRow.java
new file mode 100644
index 0000000..7ae5a04
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierDataRow.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ApiTypeFichierDataRow implements TypeFichierDataRow {
+
+ private final LinkedHashMap<String, Object> entity;
+ private final List<TypeFichierDataColumn> columns = new ArrayList<>();
+
+ public ApiTypeFichierDataRow(LinkedHashMap<String, Object> entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public List<TypeFichierDataColumn> columns() {
+ return entity
+ .entrySet()
+ .stream()
+ .map(e -> new ApiTypeFichierDataColumn(e.getKey(), e.getValue()))
+ .sorted((c1, c2) -> c1.column().compareTo(c2.column())) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierInsertData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierInsertData.java
new file mode 100644
index 0000000..2365446
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiTypeFichierInsertData.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ApiTypeFichierInsertData implements TypeFichierInsertMetaData {
+
+ private final FdxParsedData fdxParsedData;
+ private final String tableName;
+
+ public ApiTypeFichierInsertData(String tableName, FdxParsedData fdxParsedData) {
+ this.tableName = tableName;
+ this.fdxParsedData = fdxParsedData;
+ }
+
+ @Override
+ public String tableName() {
+ return tableName;
+ }
+
+ @Override
+ public List<String> columnNames() throws TypeFichierDataBadRequest, BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+ //On retourne les colonnes de l'entité
+ return fdxParsedData.data().get(0)
+ .entrySet()
+ .stream()
+ .map(e -> e.getKey())
+ .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<TypeFichierDataRow> rows() throws TypeFichierDataBadRequest, BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+ List<TypeFichierDataRow> rows = new ArrayList<>();
+ for (Map<String, Object> entity : fdxParsedData.data()) {
+ rows.add(new DefaultTypeFichierDataRow(entity));
+ }
+ return rows;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiUpdateTypeFichierData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiUpdateTypeFichierData.java
new file mode 100644
index 0000000..f69b562
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ApiUpdateTypeFichierData.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierUpdateMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ApiUpdateTypeFichierData implements TypeFichierUpdateMetaData {
+
+ private final String tableName;
+ private final FdxParsedDataRow fdxParsedDataRow;
+
+ public ApiUpdateTypeFichierData(String tableName, FdxParsedDataRow fdxParsedDataRow) {
+ this.tableName = tableName;
+ this.fdxParsedDataRow = fdxParsedDataRow;
+ }
+
+ @Override
+ public String tableName() {
+ return tableName;
+ }
+
+ @Override
+ public List<String> columnNames() throws TypeFichierDataBadRequest, ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+ //NB On itère selon l'ordre des champs dans l'entité
+ return fdxParsedDataRow.dataRow()
+ .entrySet()
+ .stream()
+ .map(e -> e.getKey())
+ .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public TypeFichierDataRow row() throws ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+ return new DefaultTypeFichierDataRow(fdxParsedDataRow.dataRow());
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ConsultationTypeFichierInsertData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ConsultationTypeFichierInsertData.java
new file mode 100644
index 0000000..5930c27
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ConsultationTypeFichierInsertData.java
@@ -0,0 +1,44 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConsultationTypeFichierInsertData implements TypeFichierInsertMetaData {
+
+ private final List<TypeFichierDataRow> rows;
+ private final String tableName;
+
+ public ConsultationTypeFichierInsertData(List<TypeFichierDataRow> rows, String tableName) {
+ this.rows = rows;
+ this.tableName = tableName;
+ }
+
+ @Override
+ public List<String> columnNames() throws Exception {
+ return rows.get(0).columns()
+ .stream()
+ .map(e -> e.column())
+ .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public String tableName() {
+ return tableName;
+ }
+
+ @Override
+ public List<TypeFichierDataRow> rows() throws Exception {
+ return rows;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/CriteriaLocalDateTimeValue.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/CriteriaLocalDateTimeValue.java
new file mode 100644
index 0000000..a1dc67f
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/CriteriaLocalDateTimeValue.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.YearMonth;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CriteriaLocalDateTimeValue {
+
+ private final String format;
+ private final Object value;
+
+ public CriteriaLocalDateTimeValue(String format, Object value) {
+ this.format = format;
+ this.value = value;
+ }
+
+ public LocalDateTime value() throws LocalDateTimeValueParseError {
+ final String stringValue = value.toString();
+
+ try {
+ if ((format.length() == 8 || format.length() == 10) && format.contains("yyyy") && format.contains("MM") && format.contains("dd")) {
+
+ LocalDate localDate = LocalDate.parse(stringValue, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ return localDate.atTime(LocalTime.MIN);
+
+ } else if ((format.length() == 6 || format.length() == 8) && format.contains("yyyy") && format.contains("MM")) {
+ YearMonth yearMonth = YearMonth.parse(stringValue, DateTimeFormatter.ofPattern("yyyy-MM"));
+ return LocalDateTime.from(yearMonth.atDay(1));
+
+ } else if (format.length() == 4 && format.equals("yyyy")) {
+ return LocalDateTime.of(Integer.parseInt(stringValue), 1, 1, 0, 0, 0, 0);
+ }
+
+ } catch (DateTimeParseException e) {
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+ }
+
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultJsonTypeFichierDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultJsonTypeFichierDataRow.java
new file mode 100644
index 0000000..21111ae
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultJsonTypeFichierDataRow.java
@@ -0,0 +1,41 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.JsonTypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DefaultJsonTypeFichierDataRow implements JsonTypeFichierDataRow {
+
+ private final Map<String, Object> entity;
+
+ public DefaultJsonTypeFichierDataRow(Map<String, Object> entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public List<TypeFichierDataColumn> columns() throws Exception {
+ return entity
+ .entrySet()
+ .stream()
+ .filter(v -> !(v.getValue() instanceof Map))
+ .map(e -> new DefaultTypeFichierDataColumn(e.getKey(), e.getValue()))
+ .sorted((c1, c2) -> c1.column().compareTo(c2.column())) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public List<JsonTypeFichierDataRow> children() {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataColumn.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataColumn.java
new file mode 100644
index 0000000..52bdfea
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataColumn.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DefaultTypeFichierDataColumn implements TypeFichierDataColumn {
+
+ private final String column;
+ private final Object value;
+
+ public DefaultTypeFichierDataColumn(String column, Object value) {
+ this.column = column;
+ this.value = value;
+ }
+
+ @Override
+ public String column() {
+ return column;
+ }
+
+ @Override
+ public Object value() throws Exception {
+ return value;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataRow.java
new file mode 100644
index 0000000..8e7d571
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/DefaultTypeFichierDataRow.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataColumn;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DefaultTypeFichierDataRow implements TypeFichierDataRow {
+
+ private final Map<String, Object> entity;
+
+ public DefaultTypeFichierDataRow(Map<String, Object> entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public List<TypeFichierDataColumn> columns() {
+ return entity
+ .entrySet()
+ .stream()
+ .map(e -> new DefaultTypeFichierDataColumn(e.getKey(), e.getValue()))
+ .sorted((c1, c2) -> c1.column().compareTo(c2.column())) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedData.java
new file mode 100644
index 0000000..0e4604a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedData.java
@@ -0,0 +1,32 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.utils.FdxParsedDataAction;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ForkJoinPool;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxParsedData {
+
+ private final List<LinkedHashMap<String, Object>> sourceData;
+ private final TableDefinition tableDefinition;
+
+ public FdxParsedData(List<LinkedHashMap<String, Object>> sourceData, TableDefinition tableDefinition) {
+ this.sourceData = sourceData;
+ this.tableDefinition = tableDefinition;
+ }
+
+ public List<Map<String, Object>> data() throws BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+ ForkJoinPool pool = new ForkJoinPool();
+ return pool.invoke(new FdxParsedDataAction(sourceData, tableDefinition));
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedDataRow.java
new file mode 100644
index 0000000..4462e33
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxParsedDataRow.java
@@ -0,0 +1,123 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import java.math.BigDecimal;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxParsedDataRow {
+
+ private final Map<String, Object> data;
+ private final Map<String, ColumnDefinition> columnNameToColumnDefinition;
+ private final TableDefinition tableDefinition;
+ private final Map<String, Object> row = new LinkedHashMap<>();
+
+ public FdxParsedDataRow(Map<String, Object> data, TableDefinition tableDefinition) {
+ this.data = data;
+ this.tableDefinition = tableDefinition;
+ this.columnNameToColumnDefinition
+ = tableDefinition.getColumnDefinitions()
+ .stream()
+ .collect(Collectors.toMap(c -> c.getName().trim().toLowerCase(), c -> c));
+ }
+
+ public Map<String, Object> dataRow() throws ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+
+ if (row.isEmpty()) {
+
+ for (Map.Entry<String, Object> entry : data.entrySet()) {
+
+ String key = entry.getKey();
+ Object value = entry.getValue();
+
+ ColumnDefinition columnDefinition = columnNameToColumnDefinition.get(key.trim().toLowerCase());
+ if (columnDefinition == null) {
+ throw new ColumnNotFoundException("La colonne " + key + " n'est pas présente pour ce fichier");
+ }
+ row.put(key.trim(), parse(columnDefinition, value));
+ }
+ }
+
+ return row;
+ }
+
+ private Object parse(ColumnDefinition columnDefinition, Object value) throws BadDataValueException, LocalDateTimeValueParseError {
+
+ String columnType = columnDefinition.getTypeDonnee();
+
+ if (columnType.equals(TypeDonnee.ALPHANUMERIQUE.toString()) && (value == null
+ || (value instanceof String && lengthLowerOrEquals(((String) value).trim(), columnDefinition.getTaille())))) {
+
+ return value != null ? value.toString().trim() : value;
+
+ } else if (columnType.equals(TypeDonnee.NUMERIQUE.toString())) {
+
+ if (value == null || value.toString().trim().isEmpty()) {
+ return null;
+ }
+
+ String stringValue = value.toString().trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isLong(stringValue)) {
+ return Long.valueOf(stringValue);
+ }
+
+ } else if (columnType.equals(TypeDonnee.DECIMAL.toString())) {
+
+ if (value == null || value.toString().trim().isEmpty()) {
+ return null;
+ }
+ String stringValue = value
+ .toString()
+ .trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille() + columnDefinition.getTaillePartieDecimale() + 1)) {
+ try {
+ return new BigDecimal(stringValue);
+ } catch (Exception ex) {
+ }
+ }
+
+ } else if (columnType.equals(TypeDonnee.DATE.toString())) {
+
+ if (value == null || value.toString().trim().isEmpty()) {
+ return null;
+ }
+ String stringValue = value.toString().trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+
+ if (lengthEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isDate(stringValue, columnDefinition.getFormatDate(), true)) {
+ return new InsertionLocalDateTimeValue(columnDefinition.getFormatDate(), value).value();
+ }
+ }
+
+ throw new BadDataValueException("La valeur " + value + " ne correspond pas au format attendu pour la colonne " + columnDefinition.getName());
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxTableDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxTableDefinition.java
new file mode 100644
index 0000000..949d0e4
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/FdxTableDefinition.java
@@ -0,0 +1,124 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.integration.enums.FileExtension;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProduction;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableDefinition {
+
+ private final String referentielVersion;
+ private final String codeTypeFichier;
+ private final Connection connection;
+ private TableDefinition tableDefinition;
+ private final List<Boolean> cachedNatureProduction = new ArrayList<>(1);
+
+ public FdxTableDefinition(String referentielVersion, String codeTypeFichier, Connection connection) {
+ this.referentielVersion = referentielVersion;
+ this.codeTypeFichier = codeTypeFichier;
+ this.connection = connection;
+ }
+
+ public TableDefinition tableDefinition() throws SQLException, NamingException {
+ if (tableDefinition == null) {
+ tableDefinition = tableDefinition(columnDefinitions());
+ }
+ return tableDefinition;
+ }
+
+ public boolean isReferentiel() throws NamingException, SQLException {
+
+ if (cachedNatureProduction.isEmpty()) {
+
+ String query = "SELECT natureproduction "
+ + "FROM natureproductionfichier "
+ + "WHERE typefichier_code = ? AND referentiel_version = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ statement.setString(1, codeTypeFichier);
+ statement.setString(2, referentielVersion);
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+ if (resultSet.next()) {
+ cachedNatureProduction.add(resultSet.getString("natureproduction").equals(NatureProduction.REFERENTIELLE.getValue()));
+ } else {
+ cachedNatureProduction.add(Boolean.TRUE);
+ }
+ }
+ }
+
+ }
+
+ return cachedNatureProduction.get(0);
+ }
+
+ private List<ColumnDefinition> columnDefinitions() throws NamingException, SQLException {
+ List<ColumnDefinition> columnDefinitions = new ArrayList<>();
+
+ String query = "SELECT name, formatdate, position, taille, taillepartiedecimale, typedonnee "
+ + "FROM columndefinition "
+ + "WHERE codetypefichier = ? AND referentielversion = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ statement.setString(1, codeTypeFichier);
+ statement.setString(2, referentielVersion);
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+
+ while (resultSet.next()) {
+
+ String name = resultSet.getString("name");
+ String typeDonnee = resultSet.getString("typedonnee");
+ String formatDate = resultSet.getString("formatdate");
+ int position = resultSet.getInt("position");
+ int taille = resultSet.getInt("taille");
+ int taillePartieDecimale = resultSet.getInt("taillepartiedecimale");
+
+ columnDefinitions.add(new ColumnDefinition(codeTypeFichier, referentielVersion, name, typeDonnee, taille, taillePartieDecimale, formatDate, position));
+ }
+ }
+ }
+ Collections.sort(columnDefinitions, (ColumnDefinition c1, ColumnDefinition c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+ return columnDefinitions;
+ }
+
+ private TableDefinition tableDefinition(List<ColumnDefinition> colDefs) throws SQLException {
+ String query = "SELECT columndelimiter, linedelimiter, extension, headerpresent"
+ + " FROM tableDefinition"
+ + " WHERE codetypefichier = ? AND referentielversion = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ statement.setString(1, codeTypeFichier);
+ statement.setString(2, referentielVersion);
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+
+ if (resultSet.next()) {
+ String columndelimiter = resultSet.getString("columndelimiter");
+ String linedelimiter = resultSet.getString("linedelimiter");
+ String extension = resultSet.getString("extension");
+ Boolean headerpresent = resultSet.getBoolean("headerpresent");
+
+ return new TableDefinition(referentielVersion, codeTypeFichier, headerpresent,
+ columndelimiter, linedelimiter, FileExtension.fromValeur(extension), colDefs);
+ }
+ }
+ }
+ return new TableDefinition(referentielVersion, codeTypeFichier, null, null, null, null, colDefs);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/InsertionLocalDateTimeValue.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/InsertionLocalDateTimeValue.java
new file mode 100644
index 0000000..a6b4c11
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/InsertionLocalDateTimeValue.java
@@ -0,0 +1,88 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeParseException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class InsertionLocalDateTimeValue {
+
+ private final String format;
+ private final Object value;
+
+ public InsertionLocalDateTimeValue(String format, Object value) {
+ this.format = format;
+ this.value = value;
+ }
+
+ public LocalDateTime value() throws LocalDateTimeValueParseError {
+ final String stringValue = value.toString().trim();
+
+ try {
+
+ if (format.length() == 4 && format.equals("yyyy") && stringValue.matches("\\d{4}")) {
+ return LocalDateTime.of(Integer.parseInt(stringValue), 1, 1, 0, 0, 0);
+
+ } else if ((format.length() == 6 && stringValue.length() == 6) || (format.length() == 7) && stringValue.length() == 7) {
+
+ int monthIndex = index(format, "MM");
+ int yearIndex = index(format, "yyyy");
+
+ return date(yearIndex, monthIndex, stringValue);
+
+ } else if ((format.length() == 8 && stringValue.length() == 8)
+ || (format.length() == 10 && stringValue.length() == 10)) {
+
+ int dayIndex = index(format, "dd");
+ int monthIndex = index(format, "MM");
+ int yearIndex = index(format, "yyyy");
+
+ return date(yearIndex, monthIndex, dayIndex, stringValue);
+ }
+
+ } catch (DateTimeParseException e) {
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+ }
+
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+ }
+
+ private int index(String format, String subSequence) {
+ return format.indexOf(subSequence);
+ }
+ private LocalDateTime date(int yearIndex, int monthIdex, int dayIndex, String stringValue) throws LocalDateTimeValueParseError {
+
+ if (yearIndex >= 0 && monthIdex >= 0 && dayIndex >= 0) {
+ int annee = Integer.parseInt(stringValue.substring(yearIndex, yearIndex + 4));
+ int mois = Integer.parseInt(stringValue.substring(monthIdex, monthIdex + 2));
+ int jour = Integer.parseInt(stringValue.substring(dayIndex, dayIndex + 2));
+
+ if (mois >= 1 && mois <= 12 && jour >= 1 && jour <= 31) {
+ if ((mois == 1 || mois == 3 || mois == 5 || mois == 7 || mois == 8 || mois == 10 || mois == 12) && jour <= 31//Les mois ayant 31 jours
+ || ((mois == 4 || mois == 6 || mois == 9 || mois == 11) && jour <= 30)//les ayant 30 jours
+ || (mois == 2 && (annee % 4 == 0 && jour <= 29 || jour <= 28))) { //Le mois de février
+
+ return LocalDateTime.of(annee, mois, jour, 0, 0, 0, 0);
+ }
+ }
+ }
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + stringValue + " au format " + format);
+ }
+
+ private LocalDateTime date(int yearIndex, int monthIdex, String stringValue) throws LocalDateTimeValueParseError {
+
+ if (yearIndex >= 0 && monthIdex >= 0) {
+ int annee = Integer.parseInt(stringValue.substring(yearIndex, yearIndex + 4));
+ int mois = Integer.parseInt(stringValue.substring(monthIdex, monthIdex + 2));
+ int jour = 1;
+
+ if (mois >= 1 && mois <= 12) {
+ return LocalDateTime.of(annee, mois, jour, 0, 0, 0, 0);
+ }
+ }
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + stringValue + " au format " + format);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java
new file mode 100644
index 0000000..f4fa5e7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonApiTypeFichierInsertData.java
@@ -0,0 +1,127 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.JsonTypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierDataRow;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonApiTypeFichierInsertData implements JsonTypeFichierInsertMetaData {
+
+ private final String tableName;
+ private final Map<String, Object> entity;
+
+ public JsonApiTypeFichierInsertData(String tableName, Map<String, Object> entity) {
+ this.tableName = tableName;
+ this.entity = entity;
+ }
+
+ @Override
+ public String tableName() {
+ return tableName;
+ }
+
+ /**
+ * Dans cette méthode on ne s'intéresse qu'aux champs de type primitif
+ *
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public TypeFichierDataRow row() throws Exception {
+ return primitiveValues(entity);
+ }
+
+ @Override
+ public List<String> columnNames() throws Exception {
+ return entity.entrySet()
+ .stream()
+ .filter(p -> !(p.getValue() instanceof Map) && !(p.getValue() instanceof List))
+ .map(e -> e.getKey())
+ .sorted((e1, e2) -> e1.compareTo(e2)) //On se rassure de classer le résultat
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * Dans cette méthode on ne s'intéresse qu'aux champs de type Map ou List
+ *
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public List<JsonTypeFichierInsertMetaData> children() throws Exception {
+ Map<String, Object> mapOfObjectElts = new HashMap<>();
+
+ for (Map.Entry<String, Object> e : entity.entrySet()) {
+ if ((e.getValue() instanceof Map) || (e.getValue() instanceof List)) {
+ mapOfObjectElts.put(e.getKey(), e.getValue());
+ }
+ }
+ return children(mapOfObjectElts);
+ }
+
+ private TypeFichierDataRow primitiveValues(Map<String, Object> entity) {
+ Map<String, Object> mapOfPrimitiveElts = new HashMap<>();
+
+ for (Map.Entry<String, Object> e : entity.entrySet()) {
+ if (!(e.getValue() instanceof Map) && !(e.getValue() instanceof List)) {
+ mapOfPrimitiveElts.put(e.getKey(), e.getValue());
+ }
+ }
+ if (!mapOfPrimitiveElts.isEmpty()) {
+ return new DefaultTypeFichierDataRow(mapOfPrimitiveElts);
+ }
+ return null;
+ }
+
+ private List<JsonTypeFichierInsertMetaData> children(Map<String, Object> mapOfObjectElts) {
+ List<JsonTypeFichierInsertMetaData> children = new ArrayList<>();
+
+ for (Map.Entry<String, Object> entry : mapOfObjectElts.entrySet()) {
+
+ if (entry.getValue() instanceof List) {
+ children.addAll(listValues(entry.getKey(), entry.getValue()));
+ } else if (entry.getValue() instanceof Map) {
+ JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + entry.getKey().toLowerCase(), (Map<String, Object>) entry.getValue());
+ children.add(metaData);
+ }
+ }
+ return children;
+ }
+
+ private List<JsonTypeFichierInsertMetaData> listValues(String key, Object value) {
+ List<JsonTypeFichierInsertMetaData> children = new ArrayList<>();
+ List valueList = (List) value;
+
+ if (!valueList.isEmpty()) {
+ Object obj = valueList.get(0);
+
+ //Liste d'objets
+ if (obj instanceof Map) {
+ for (Object o : valueList) {
+ JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + key.toLowerCase(), (Map<String, Object>) o);
+ children.add(metaData);
+ }
+ } else {
+ //Liste de primitifs
+ for (Object o : valueList) {
+ Map<String, Object> map = new HashMap<>();
+ map.put(key.toLowerCase(), o);
+ JsonTypeFichierInsertMetaData metaData = new JsonApiTypeFichierInsertData(tableName + "_" + key.toLowerCase(), map);
+ children.add(metaData);
+ }
+ }
+ }
+ return children;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonDataRowToUpdate.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonDataRowToUpdate.java
new file mode 100644
index 0000000..02043e4
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonDataRowToUpdate.java
@@ -0,0 +1,153 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonDataRowToUpdate {
+
+ private final Map<String, Object> dataToSet;
+ private final String parentTableName;
+ private final List<ColumnDefinition> columnsDefinition;
+
+ public JsonDataRowToUpdate(Map<String, Object> data, String parentTableName, List<ColumnDefinition> columnsDefinition) {
+ this.dataToSet = data;
+ this.parentTableName = parentTableName;
+ this.columnsDefinition = columnsDefinition;
+ }
+
+ public Map<String, Map<String, Object>> dataRow() throws ColumnNotFoundException, SQLException, BadDataValueException, LocalDateTimeValueParseError {
+ Map<String, Map<String, Object>> tableToDataRow = new HashMap<>();
+
+ for (Map.Entry<String, Object> entry : dataToSet.entrySet()) {
+
+ if (nomColonneIsValid(entry.getKey())) {
+ String tableName = tableName(parentTableName, entry.getKey());
+ Map<String, Object> dataToSetToTable = tableToDataRow.get(tableName);
+
+ if (dataToSetToTable == null) {
+ dataToSetToTable = new HashMap<>();
+ }
+ ColumnDefinition columnDefinition = columnsDefinition.stream().filter(c -> c.getName().equalsIgnoreCase(entry.getKey())).findFirst().get();
+
+ Object data = parse(columnDefinition, entry.getValue());
+ dataToSetToTable.put(cleanFieldName(entry.getKey()), data);
+ tableToDataRow.put(tableName, dataToSetToTable);
+ } else {
+ throw new ColumnNotFoundException("La colonne " + entry.getKey() + " n'est pas présente pour cette strcuture JSON");
+ }
+ }
+ return tableToDataRow;
+ }
+
+ private String cleanFieldName(String fieldName) {
+ int index = fieldName.lastIndexOf(".");
+ if (index > 0) {
+ String cleanFieldName = fieldName.substring(index + 1);
+ return cleanFieldName;
+ } else {
+ return fieldName;
+ }
+
+ }
+
+ private String tableName(String rootTable, String fieldName) {
+ int index = fieldName.lastIndexOf(".");
+ ColumnDefinition columnDefinition = columnsDefinition.stream().filter(c -> c.getName().equalsIgnoreCase(fieldName)).findFirst().get();
+
+ if (columnDefinition.isCollection()) {
+ if (index <= 0) {
+ return (rootTable + "_" + fieldName).toLowerCase();
+ } else {
+ String name = fieldName.substring(index);
+ return (rootTable + "_" + name).toLowerCase();
+ }
+ } else {
+ if (index <= 0) {
+ return rootTable;
+ } else {
+ String name = fieldName.subSequence(0, index).toString().replaceAll("\\.", "_");
+ return (rootTable + "_" + name).toLowerCase();
+ }
+ }
+
+ }
+
+ private boolean nomColonneIsValid(String nomColonne) {
+ return nomColonne != null
+ && columnsDefinition
+ .stream()
+ .filter(c -> c.getName().equalsIgnoreCase(nomColonne))
+ .findFirst()
+ .isPresent();
+ }
+
+ private Object parse(ColumnDefinition columnDefinition, Object value) throws BadDataValueException, LocalDateTimeValueParseError {
+
+ String typeDonnee = columnDefinition.getTypeDonnee();
+
+ if (typeDonnee.equals(TypeDonnee.ALPHANUMERIQUE.toString())
+ && (value == null || (value instanceof String && lengthLowerOrEquals((String) value, columnDefinition.getTaille())))) {
+
+ return value != null ? value.toString().trim() : value;
+
+ } else if (typeDonnee.equals(TypeDonnee.NUMERIQUE.toString())) {
+
+ if (value == null) {
+ return 0L;
+ }
+
+ String stringValue = value.toString();
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isLong(stringValue)) {
+ return Long.valueOf(stringValue);
+ }
+
+ } else if (typeDonnee.equals(TypeDonnee.DECIMAL.toString())) {
+
+ if (value == null) {
+ return 0.0;
+ }
+
+ String stringValue = value.toString();
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isDouble(stringValue)) {
+ return Double.valueOf(stringValue);
+ }
+
+ } else if (typeDonnee.equals(TypeDonnee.DATE.toString())) {
+
+ if (value == null) {
+ return null;
+ }
+ String stringValue = value.toString();
+
+ if (lengthEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isDate(stringValue, columnDefinition.getFormatDate(), true)) {
+ return new InsertionLocalDateTimeValue(columnDefinition.getFormatDate(), value).value();
+ }
+ }
+
+ throw new BadDataValueException("La valeur " + value + " ne correspond pas au format attendu pour la colonne " + columnDefinition.getName());
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedData.java
new file mode 100644
index 0000000..e83e461
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedData.java
@@ -0,0 +1,36 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.utils.JsonFdxParsedDataAction;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ForkJoinPool;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxParsedData {
+
+ private final List<LinkedHashMap<String, Object>> sourceData;
+ private final JsonStructure jsonStructure;
+
+ public JsonFdxParsedData(List<LinkedHashMap<String, Object>> sourceData, JsonStructure jsonStructure) {
+ this.sourceData = sourceData;
+ this.jsonStructure = jsonStructure;
+ }
+
+ public List<Map<String, Object>> data() throws BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+ ForkJoinPool pool = new ForkJoinPool();
+ return pool.invoke(new JsonFdxParsedDataAction(sourceData, jsonStructure));
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataIterator.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataIterator.java
new file mode 100644
index 0000000..9bd1fc2
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataIterator.java
@@ -0,0 +1,36 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxParsedDataIterator {
+
+ private final JsonFdxParsedData fdxParsedData;
+ private final String tableName;
+ private List<Map<String, Object>> data = null;
+
+ public JsonFdxParsedDataIterator(String tableName, JsonFdxParsedData fdxParsedData) {
+ this.fdxParsedData = fdxParsedData;
+ this.tableName = tableName;
+ }
+
+ public List<JsonApiTypeFichierInsertData> rows() throws Exception {
+ List<JsonApiTypeFichierInsertData> rows = new ArrayList<>();
+ data = fdxParsedData.data();
+
+ for (Map<String, Object> entity : data) {
+ rows.add(new JsonApiTypeFichierInsertData(tableName, entity));
+ }
+
+ return rows;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataRow.java
new file mode 100644
index 0000000..609d237
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxParsedDataRow.java
@@ -0,0 +1,267 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.model.pojo.JsonColumnDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxParsedDataRow {
+
+ private final Map<String, Object> data;
+ private final Map<String, Object> row = new LinkedHashMap<>();
+ private final Map<String, JsonColumnDefinition> columnNameToColumnDefinition = new HashMap<>();
+
+ public JsonFdxParsedDataRow(Map<String, Object> data, JsonStructure jsonStructure) {
+ this.data = data;
+ columnNameToJsonColumnDefinition(jsonStructure);
+ }
+
+ public Map<String, Object> dataRow() throws ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+ Set<String> foundColumns = new HashSet<>();
+
+ if (row.isEmpty()) {
+
+ for (Map.Entry<String, Object> entry : data.entrySet()) {
+
+ String key = entry.getKey();
+ Object value = entry.getValue();
+
+ JsonColumnDefinition jsonColumnDefinition = columnNameToColumnDefinition.get(key.trim().toLowerCase());
+
+ if (jsonColumnDefinition == null) {
+ throw new ColumnNotFoundException("La colonne " + key + " n'est pas une colonne de ce type de fichier");
+ }
+ foundColumns.add(key.toLowerCase());
+
+ if (value == null) {
+
+ if (jsonColumnDefinition.isRequired()) {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " est obligatoire");
+ }
+ return row;
+ }
+ if (jsonColumnDefinition.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ if (jsonColumnDefinition.isCollection()) {
+ if (value instanceof List) {
+ List<Object> objectsList = (List<Object>) value;
+ List<Object> parsedValues = new ArrayList<>();
+ int i = 0;
+
+ for (Object obj : objectsList) {
+ parsedValues.add(dataRow((Map<String, Object>) obj, jsonColumnDefinition.getColumnNameToColumnDefinition(), jsonColumnDefinition.getName(), i + 1));
+ i++;
+ }
+ row.put(key.trim(), parsedValues);
+ } else {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " doit être une liste de données");
+ }
+ } else {
+ row.put(key.trim(), dataRow((Map<String, Object>) value, jsonColumnDefinition.getColumnNameToColumnDefinition(), jsonColumnDefinition.getName(), 0));
+ }
+ } else {
+ if (jsonColumnDefinition.isCollection()) {
+ if (value instanceof List) {
+ List<Object> objectsList = (List<Object>) value;
+ List<Object> parsedValues = new ArrayList<>();
+ int i = 0;
+
+ for (Object obj : objectsList) {
+ parsedValues.add(parse(jsonColumnDefinition, obj, "", i + 1));
+ i++;
+ }
+ row.put(key.trim(), parsedValues);
+ } else {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " doit être un tableau de données");
+ }
+ } else {
+ row.put(key.trim(), parse(jsonColumnDefinition, value, "", 0));
+ }
+ }
+ }
+ //Cherche les colonnes obligatoires qui sont absentes
+ stopIfRequiredColumnIsAbsent(foundColumns, columnNameToColumnDefinition, "");
+ }
+ return row;
+ }
+
+ private void columnNameToJsonColumnDefinition(JsonStructure jsonStructure) {
+ for (JsonStructure j : jsonStructure.getFields()) {
+ if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ JsonColumnDefinition jsonCol = new JsonColumnDefinition(j.getTypeDonnee(), j.getName(), j.getLengthh(), j.getFormatDate(), j.isRequired(), j.isCollection());
+
+ for (JsonStructure field : j.getFields()) {
+ jsonCol.getColumnNameToColumnDefinition().put(field.getName().toLowerCase(), jsonColumnDefinition(field));
+ }
+ columnNameToColumnDefinition.put(j.getName().toLowerCase(), jsonCol);
+ } else {
+ columnNameToColumnDefinition.put(j.getName().toLowerCase(), new JsonColumnDefinition(j.getTypeDonnee(), j.getName(), j.getLengthh(), j.getFormatDate(), j.isRequired(), j.isCollection()));
+ }
+ }
+ }
+
+ private JsonColumnDefinition jsonColumnDefinition(JsonStructure jsonStruct) {
+ JsonColumnDefinition jsonCol = new JsonColumnDefinition(jsonStruct.getTypeDonnee(), jsonStruct.getName(), jsonStruct.getLengthh(), jsonStruct.getFormatDate(), jsonStruct.isRequired(), jsonStruct.isCollection());
+
+ if (jsonStruct.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ for (JsonStructure j : jsonStruct.getFields()) {
+ jsonCol.getColumnNameToColumnDefinition().put(j.getName().toLowerCase(), jsonColumnDefinition(j));
+ }
+ }
+ return jsonCol;
+ }
+
+ private Map<String, Object> dataRow(Map<String, Object> subData, Map<String, JsonColumnDefinition> subColumnNameToColumnDefinition, String parentName, int rangElement) throws ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+ Map<String, Object> subRow = new LinkedHashMap<>();
+ Set<String> foundColumns = new HashSet<>();
+
+ for (Map.Entry<String, Object> entry : subData.entrySet()) {
+
+ String key = entry.getKey();
+ Object value = entry.getValue();
+
+ JsonColumnDefinition jsonColumnDefinition = subColumnNameToColumnDefinition.get(key.trim().toLowerCase());
+
+ if (jsonColumnDefinition == null) {
+ throw new ColumnNotFoundException("La colonne " + key + " n'est pas présente pour ce fichier");
+ }
+ foundColumns.add(key.toLowerCase());
+
+ if (value == null) {
+
+ if (jsonColumnDefinition.isRequired()) {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " est obligatoire");
+ }
+ return subRow;
+ }
+
+ if (jsonColumnDefinition.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ parentName += "." + jsonColumnDefinition.getName();
+
+ if (jsonColumnDefinition.isCollection()) {
+ if (value instanceof List) {
+ List<Object> objectsList = (List<Object>) value;
+ List<Object> parsedValues = new ArrayList<>();
+ int i = 0;
+
+ for (Object obj : objectsList) {
+ parsedValues.add(dataRow((Map<String, Object>) obj, jsonColumnDefinition.getColumnNameToColumnDefinition(), parentName, rangElement));
+ i++;
+ }
+ subRow.put(key.trim(), parsedValues);
+ } else {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " doit être une liste de données");
+ }
+ } else {
+ subRow.put(key.trim(), dataRow((Map<String, Object>) value, jsonColumnDefinition.getColumnNameToColumnDefinition(), parentName, rangElement));
+ }
+ } else {
+ if (jsonColumnDefinition.isCollection()) {
+ if (value instanceof List) {
+ List<Object> objectsList = (List<Object>) value;
+ List<Object> parsedValues = new ArrayList<>();
+ int i = 0;
+
+ for (Object obj : objectsList) {
+ parsedValues.add(parse(jsonColumnDefinition, obj, "", i + 1));
+ i++;
+ }
+ subRow.put(key.trim(), parsedValues);
+ } else {
+ throw new BadDataValueException("La valeur de la colonne " + jsonColumnDefinition.getName() + " doit être un tableau de données");
+ }
+ } else {
+ subRow.put(key.trim(), parse(jsonColumnDefinition, value, parentName, rangElement));
+ }
+ }
+ }
+ //Cherche les colonnes obligatoires qui sont absentes
+ stopIfRequiredColumnIsAbsent(foundColumns, subColumnNameToColumnDefinition, parentName);
+
+ return subRow;
+ }
+
+ private Object parse(JsonColumnDefinition columnDefinition, Object value, String parentName, int rangElement) throws BadDataValueException, LocalDateTimeValueParseError {
+
+ TypeDonnee typeDonnee = columnDefinition.getTypeDonnee();
+
+ if (typeDonnee.equals(TypeDonnee.ALPHANUMERIQUE) && (value == null
+ || (value instanceof String && lengthLowerOrEquals((String) value, columnDefinition.getLengthh())))) {
+
+ return value != null ? value.toString().trim() : value;
+
+ } else if (typeDonnee.equals(TypeDonnee.NUMERIQUE)) {
+
+ if (value == null) {
+ return 0L;
+ }
+
+ String stringValue = value.toString();
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getLengthh()) && GenericValidator.isLong(stringValue)) {
+ return Long.valueOf(stringValue);
+ }
+
+ } else if (typeDonnee.equals(TypeDonnee.DECIMAL)) {
+
+ if (value == null) {
+ return 0.0;
+ }
+
+ String stringValue = value.toString();
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getLengthh()) && GenericValidator.isDouble(stringValue)) {
+ return Double.valueOf(stringValue);
+ }
+
+ } else if (typeDonnee.equals(TypeDonnee.DATE)) {
+
+ if (value == null) {
+ return null;
+ }
+ String stringValue = value.toString();
+
+ if (lengthEquals(stringValue, columnDefinition.getLengthh()) && GenericValidator.isDate(stringValue, columnDefinition.getFormatDate(), true)) {
+ return new InsertionLocalDateTimeValue(columnDefinition.getFormatDate(), value).value();
+ }
+ }
+ String rangDescription = rangElement == 0 ? "" : "le " + rangElement + "ème élément de ";
+ String fullQualifiedNameOfColumn = parentName == null || parentName.isEmpty() ? columnDefinition.getName() : parentName + "." + columnDefinition.getName();
+
+ throw new BadDataValueException("La valeur " + value + " ne correspond pas au format attendu pour " + rangDescription + " la colonne " + fullQualifiedNameOfColumn);
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+
+ private void stopIfRequiredColumnIsAbsent(Set<String> foundColumns, Map<String, JsonColumnDefinition> allColumns, String parentName) throws BadDataValueException {
+
+ for (String columnName : allColumns.keySet()) {
+ String fullQualifiedName = parentName.isEmpty() ? columnName : parentName + "." + columnName;
+
+ if (allColumns.get(columnName).isRequired() && !foundColumns.contains(columnName.toLowerCase())) {
+ throw new BadDataValueException("La valeur de la colonne " + fullQualifiedName + " est obligatoire");
+ }
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxTableStructure.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxTableStructure.java
new file mode 100644
index 0000000..747426d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonFdxTableStructure.java
@@ -0,0 +1,75 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxTableStructure {
+
+ private final String referentielVersion;
+ private final String codeTypeFichier;
+ private final Connection connection;
+
+ public JsonFdxTableStructure(String referentielVersion, String codeTypeFichier, Connection connection) {
+ this.referentielVersion = referentielVersion;
+ this.codeTypeFichier = codeTypeFichier;
+ this.connection = connection;
+ }
+
+ public JsonStructure jsonStructure() throws NamingException, SQLException {
+ JsonStructure jsonStructure = null;
+ Long jsonStructureId = jsonStructureId();
+
+ if (jsonStructureId != null) {
+ String query = "SELECT * FROM JsonStructure j where j.id = ?";
+
+ try ( PreparedStatement stmt = connection.prepareStatement(query)) {
+ stmt.setLong(1, jsonStructureId);
+ ResultSet resultSet = stmt.executeQuery();
+
+ if (resultSet.next()) {
+ jsonStructure = new JsonStructure();
+ jsonStructure.setId(resultSet.getLong("id"));
+ jsonStructure.setLengthh(resultSet.getInt("lengthh"));
+ jsonStructure.setTypeDonnee(TypeDonnee.fromValeur(resultSet.getString("typedonnee")));
+ jsonStructure.setName(resultSet.getString("name"));
+ jsonStructure.setRequired(resultSet.getBoolean("required"));
+ jsonStructure.setCollection(resultSet.getBoolean("collection"));
+ jsonStructure.setFormatDate(resultSet.getString("formatdate"));
+
+ }
+ }
+ }
+
+ return jsonStructure;
+ }
+
+ private Long jsonStructureId() throws SQLException {
+ String query = "SELECT json_structure_id FROM typeFichierJson t WHERE t.type_fichier_code = ? AND t.referentiel_version = ?";
+
+ try ( PreparedStatement stmt = connection.prepareStatement(query)) {
+ stmt.setString(1, codeTypeFichier);
+ stmt.setString(2, referentielVersion);
+ ResultSet resultSet = stmt.executeQuery();
+
+ if (resultSet.next()) {
+ return resultSet.getLong(1);
+
+ }
+
+ }
+ return null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonParsedQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonParsedQueryCriterion.java
new file mode 100644
index 0000000..1e73b13
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonParsedQueryCriterion.java
@@ -0,0 +1,137 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+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.tables.FdxTableColumn;
+import com.megatim.fdxcommons.tools.database.tables.JsonFdxTableColumns;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.AppColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonParsedQueryCriterion {
+
+ private final QueryCriterion queryCriterion;
+ private final JsonFdxTableColumns fdxTableColumns;
+ private final List<ColumnDefinition> columnDefinitionsWithFullQualifiedName;
+ private final FdxApiColumnDefinitions apiColumnDefinitions = new FdxApiColumnDefinitions();
+ private final FdxConsultationColumnDefinitions fdxConsColumnDefinitions = new FdxConsultationColumnDefinitions();
+
+ public JsonParsedQueryCriterion(QueryCriterion queryCriterion, JsonFdxTableColumns fdxTableColumns, List<ColumnDefinition> columnDefinitionsWithFullQualifiedName) {
+ this.queryCriterion = queryCriterion;
+ this.fdxTableColumns = fdxTableColumns;
+ this.columnDefinitionsWithFullQualifiedName = columnDefinitionsWithFullQualifiedName;
+ }
+
+ public QueryCriterion parsedCriterion() throws LocalDateTimeValueParseError, BadQueryCriteriaException {
+ return queryCriterion != null
+ ? parsedCriterion(queryCriterion)
+ : null;
+ }
+
+ private QueryCriterion parsedCriterion(QueryCriterion criterion) throws LocalDateTimeValueParseError, BadQueryCriteriaException {
+
+ if (criterion == null) {
+ return null;
+ }
+
+ if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty() && criterion.getCriteriaLogicConnector() != null) {
+ List<QueryCriterion> subCriteria = new ArrayList<>();
+
+ for (QueryCriterion qc : criterion.getSubCriteria()) {
+ QueryCriterion parseCriterion = parsedCriterion(qc);
+
+ if (parseCriterion != null) {
+ subCriteria.add(parseCriterion);
+ }
+ }
+ if (!subCriteria.isEmpty()) {
+ return new QueryCriterion(null,
+ null,
+ null,
+ criterion.getCriteriaLogicConnector(),
+ subCriteria
+ );
+ }
+
+ } else if ((criterion.getSubCriteria() == null || criterion.getSubCriteria().isEmpty())
+ && nomColonneIsValid(criterion.getNomColonne())
+ && criterion.getOperateur() != null) {
+ Object correctValue = correctValue(criterion.getNomColonne(), criterion.getCriteriaValue(), criterion.getOperateur());
+
+ if (isUnaryOperator(criterion.getOperateur()) || (correctValue != null && !correctValue.toString().isEmpty())) {
+ return new QueryCriterion(criterion.getNomColonne(),
+ correctValue,
+ criterion.getOperateur(),
+ null,
+ Arrays.asList()
+ );
+ }
+ }
+
+ throw new BadQueryCriteriaException("Critère non valide");
+ }
+
+ private boolean nomColonneIsValid(String nomColonne) {
+ return apiColumnDefinitions.isAppColumnDefinition(nomColonne)
+ || fdxConsColumnDefinitions.isAppColumnDefinition(nomColonne)
+ || nomColonne != null && fdxTableColumns
+ .columns()
+ .stream()
+ .filter(c -> c.getName().equalsIgnoreCase(nomColonne))
+ .findFirst()
+ .isPresent();
+ }
+
+ private Object correctValue(String nomColonne, Object value, Operateur operateur) throws LocalDateTimeValueParseError, BadQueryCriteriaException {
+
+ if (value == null) {
+ return null;
+ }
+
+ AppColumnDefinitions appColumnDefinitions = new AppColumnDefinitions();
+
+ for (FdxTableColumn column : fdxTableColumns.columns()) {
+
+ if (column.getName().equalsIgnoreCase(nomColonne)) {
+
+ boolean isDateCreationColumn = appColumnDefinitions.isDateCreationColumn(column.getName());
+
+ String dateFormat = columnDefinitionsWithFullQualifiedName
+ .stream()
+ .filter(cD -> cD.getName().equalsIgnoreCase(nomColonne) && cD.getTypeDonnee().equals("DATE"))
+ .findFirst()
+ .map(cD -> cD.getFormatDate())
+ .orElse("");
+
+ QueryCriteriaCorrectValue queryCriteriaCorrectValue = new QueryCriteriaCorrectValue(
+ column.getType(),
+ value,
+ operateur,
+ dateFormat,
+ isDateCreationColumn
+ );
+
+ return queryCriteriaCorrectValue.value();
+ }
+ }
+
+ throw new BadQueryCriteriaException("Critères mal formattés");
+ }
+
+ private boolean isUnaryOperator(Operateur operateur) {
+ return operateur.equals(Operateur.IS_NOT_NULL) || operateur.equals(Operateur.IS_NULL);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonSelectQueryResult.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonSelectQueryResult.java
new file mode 100644
index 0000000..18d609d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/JsonSelectQueryResult.java
@@ -0,0 +1,41 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonSelectQueryResult {
+
+ private final int lastIndexRead;
+ private final List<Map<String, Object>> rows;
+ private String token;
+
+ public JsonSelectQueryResult(int lastIndexRead, List<Map<String, Object>> rows) {
+ this.lastIndexRead = lastIndexRead;
+ this.rows = rows;
+ }
+
+ public int lastIndexRead() {
+ return lastIndexRead;
+ }
+
+ public List<Map<String, Object>> rows() {
+ return rows;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ParsedQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ParsedQueryCriterion.java
new file mode 100644
index 0000000..450d5b2
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/ParsedQueryCriterion.java
@@ -0,0 +1,132 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.AppColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumn;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumns;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ParsedQueryCriterion {
+
+ private final QueryCriterion queryCriterion;
+ private final FdxTableColumns fdxTableColumns;
+ private final List<ColumnDefinition> columnDefinitions;
+
+ public ParsedQueryCriterion(QueryCriterion queryCriterion, FdxTableColumns fdxTableColumns, List<ColumnDefinition> columnDefinitions) {
+ this.queryCriterion = queryCriterion;
+ this.fdxTableColumns = fdxTableColumns;
+ this.columnDefinitions = columnDefinitions;
+ }
+
+ public QueryCriterion parsedCriterion() throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
+ return queryCriterion != null
+ ? parsedCriterion(queryCriterion)
+ : null;
+ }
+
+ private QueryCriterion parsedCriterion(QueryCriterion criterion) throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
+
+ if (criterion == null) {
+ return null;
+ }
+
+ if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty() && criterion.getCriteriaLogicConnector() != null) {
+ List<QueryCriterion> subCriteria = new ArrayList<>();
+
+ for (QueryCriterion qc : criterion.getSubCriteria()) {
+ QueryCriterion parseCriterion = parsedCriterion(qc);
+
+ if (parseCriterion != null) {
+ subCriteria.add(parseCriterion);
+ }
+ }
+ if (!subCriteria.isEmpty()) {
+ return new QueryCriterion(null,
+ null,
+ null,
+ criterion.getCriteriaLogicConnector(),
+ subCriteria
+ );
+ }
+
+ } else if ((criterion.getSubCriteria() == null || criterion.getSubCriteria().isEmpty())
+ && nomColonneIsValid(criterion.getNomColonne())
+ && criterion.getOperateur() != null) {
+ Object correctValue = correctValue(criterion.getNomColonne(), criterion.getCriteriaValue(), criterion.getOperateur());
+
+ if (isUnaryOperator(criterion.getOperateur()) || (correctValue != null && !correctValue.toString().isEmpty())) {
+ return new QueryCriterion(criterion.getNomColonne(),
+ correctValue,
+ criterion.getOperateur(),
+ null,
+ Arrays.asList()
+ );
+ }
+ }
+
+ throw new BadQueryCriteriaException("Critère non valide");
+ }
+
+ private boolean nomColonneIsValid(String nomColonne) throws SQLException, NamingException {
+ return nomColonne != null && fdxTableColumns
+ .columns()
+ .stream()
+ .filter(c -> c.getName().equalsIgnoreCase(nomColonne))
+ .findFirst()
+ .isPresent();
+ }
+
+ private Object correctValue(String nomColonne, Object value, Operateur operateur) throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
+
+ if (value == null) {
+ return null;
+ }
+
+ AppColumnDefinitions appColumnDefinitions = new AppColumnDefinitions();
+
+ for (FdxTableColumn column : fdxTableColumns.columns()) {
+
+ if (column.getName().equalsIgnoreCase(nomColonne)) {
+
+ boolean isDateCreationColumn = appColumnDefinitions.isDateCreationColumn(column.getName());
+
+ String dateFormat = columnDefinitions
+ .stream()
+ .filter(cD -> cD.getName().equalsIgnoreCase(nomColonne) && cD.getTypeDonnee().equals("DATE"))
+ .findFirst()
+ .map(cD -> cD.getFormatDate())
+ .orElse("");
+
+ QueryCriteriaCorrectValue queryCriteriaCorrectValue = new QueryCriteriaCorrectValue(
+ column.getType(),
+ value,
+ operateur,
+ dateFormat,
+ isDateCreationColumn
+ );
+
+ return queryCriteriaCorrectValue.value();
+
+ }
+
+ }
+
+ throw new BadQueryCriteriaException("Critères mal formattés");
+ }
+
+ private boolean isUnaryOperator(Operateur operateur) {
+ return operateur.equals(Operateur.IS_NOT_NULL) || operateur.equals(Operateur.IS_NULL);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriteriaCorrectValue.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriteriaCorrectValue.java
new file mode 100644
index 0000000..85137a3
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriteriaCorrectValue.java
@@ -0,0 +1,227 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class QueryCriteriaCorrectValue {
+
+ private final int dataType;
+ private final Object criteriaValue;
+ private final Operateur operateur;
+ private final String dateFormat;
+ private final boolean isDateActionColumn;
+
+ public QueryCriteriaCorrectValue(int dataType, Object criteriaValue, Operateur operateur, String dateFormat, boolean isDateActionColumn) {
+ this.dataType = dataType;
+ this.criteriaValue = criteriaValue;
+ this.operateur = operateur;
+ this.dateFormat = dateFormat;
+ this.isDateActionColumn = isDateActionColumn;
+ }
+
+ public Object value() throws LocalDateTimeValueParseError, BadQueryCriteriaException {
+ if (operateurWithBetween()) {
+ Object lowerBound = null;
+ Object upperBound = null;
+
+ if (criteriaValue instanceof BetweenOperatorValues) {
+ BetweenOperatorValues values = (BetweenOperatorValues) criteriaValue;
+ if (values != null) {
+ lowerBound = values.getLowerBound();
+ upperBound = values.getUpperBound();
+ }
+ } else {
+ LinkedHashMap map = (LinkedHashMap) criteriaValue;
+
+ if (map != null) {
+ lowerBound = map.get("lowerBound");
+ upperBound = map.get("upperBound");
+ }
+ }
+ if (lowerBound != null && upperBound != null) {
+ if (dataTypeIsInt()) {
+ return new BetweenOperatorValues(intValue(lowerBound), intValue(upperBound));
+ } else if (dataTypeIsDecimal()) {
+ return new BetweenOperatorValues(decimalValue(lowerBound), decimalValue(upperBound));
+ } else if (dataTypeIsString()) {
+ return new BetweenOperatorValues(stringValue(lowerBound), stringValue(upperBound));
+ } else if (dataTypeIsTimeStamp()) {
+ return new BetweenOperatorValues(dateValue(lowerBound), dateValue(upperBound));
+ }
+ }
+ } else if (operateurWithIn()) {
+ if (criteriaValue instanceof Collection<?>) {
+ Collection<?> collection = (Collection<?>) criteriaValue;
+ return collectionValues(collection);
+ }
+ } else if (operateurWithComparison()) {
+ if (dataTypeIsInt()) {
+ return intValue(criteriaValue);
+ } else if (dataTypeIsDecimal()) {
+ return decimalValue(criteriaValue);
+ } else if (dataTypeIsString()) {
+ return stringValue(criteriaValue);
+ } else if (dataTypeIsTimeStamp()) {
+ return dateValue(criteriaValue);
+ } else if(dataTypeIsBoolean()) {
+ return booleanValue(criteriaValue);
+ }
+ } else if (operateurWithLike()) {
+ if (dataTypeIsString()) {
+ return stringValue(criteriaValue);
+ }
+
+ } else if (operateurWithoutValue()) {
+ return null;
+ }
+
+ throw new BadQueryCriteriaException(
+ "Opérateur inconnu");
+ }
+
+ private boolean operateurWithoutValue() {
+ return this.operateur.equals(Operateur.IS_NOT_NULL)
+ || this.operateur.equals(Operateur.IS_NULL);
+ }
+
+ private boolean operateurWithBetween() {
+ return this.operateur.equals(Operateur.BETWEEN)
+ || this.operateur.equals(Operateur.NOT_BETWEEN);
+ }
+
+ private boolean operateurWithIn() {
+ return this.operateur.equals(Operateur.IN)
+ || this.operateur.equals(Operateur.NOT_IN);
+ }
+
+ private boolean operateurWithComparison() {
+ return this.operateur.equals(Operateur.EQUALS)
+ || this.operateur.equals(Operateur.NOT_EQUALS)
+ || this.operateur.equals(Operateur.GREATER_OR_EQUALS_THAN)
+ || this.operateur.equals(Operateur.GREATER_THAN)
+ || this.operateur.equals(Operateur.LOWER_OR_EQUALS_THAN)
+ || this.operateur.equals(Operateur.LOWER_THAN);
+ }
+
+ private boolean operateurWithLike() {
+ return this.operateur.equals(Operateur.LIKE);
+ }
+
+ private boolean dataTypeIsString() {
+ return this.dataType == 12;
+ }
+
+ private boolean dataTypeIsTimeStamp() {
+ return this.dataType == 93;
+ }
+
+ private boolean dataTypeIsInt() {
+ return this.dataType == 4 || this.dataType == 5 || this.dataType == -5;
+ }
+
+ private boolean dataTypeIsBoolean() {
+ return this.dataType == -7;
+ }
+
+ private boolean dataTypeIsDecimal() {
+ return this.dataType == 3;
+ }
+
+ private Collection<?> collectionValues(Collection<?> collection) throws LocalDateTimeValueParseError, BadQueryCriteriaException {
+ if (dataTypeIsInt()) {
+ return collectionOfInt(collection);
+ } else if (dataTypeIsDecimal()) {
+ return collectionOfBigDecimal(collection);
+ } else if (dataTypeIsTimeStamp()) {
+ return collectionOfLocalDateTime(collection);
+ } else if (dataTypeIsString()) {
+ return collectionOfString(collection);
+ }
+ throw new BadQueryCriteriaException("La valeur de ce critère doit une liste");
+ }
+
+ private Collection<String> collectionOfString(Collection<?> collection) throws BadQueryCriteriaException {
+ Collection<String> cleanValues = new ArrayList<>();
+ for (Object elt : collection) {
+ cleanValues.add(stringValue(elt));
+ }
+ return cleanValues;
+ }
+
+ private String stringValue(Object element) throws BadQueryCriteriaException {
+ if (!(element instanceof String)) {
+ throw new BadQueryCriteriaException("Les critères associés à cette requête sont incorrects.");
+ }
+ return (String) element;
+ }
+
+ private boolean booleanValue(Object element) throws BadQueryCriteriaException {
+ if (!(element instanceof Boolean)) {
+ throw new BadQueryCriteriaException("Les critères associés à cette requête sont incorrects.");
+ }
+ return (Boolean) element;
+ }
+
+ private Collection<LocalDateTime> collectionOfLocalDateTime(Collection<?> collection) throws LocalDateTimeValueParseError {
+ Collection cleanValues = new ArrayList<>();
+ for (Object element : collection) {
+ cleanValues.add(dateValue(element));
+ }
+ return cleanValues;
+ }
+
+ private LocalDateTime dateValue(Object value) throws LocalDateTimeValueParseError {
+ if (isDateActionColumn) {
+ if (!(value instanceof LocalDateTime)) {
+ throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " pour la colonne " + new DateCreationColumnDefinition().name());
+ }
+ return (LocalDateTime) value;
+ } else {
+ return new CriteriaLocalDateTimeValue(dateFormat, value).value();
+ }
+ }
+
+ private Long intValue(Object value) throws BadQueryCriteriaException {
+ try {
+ return Long.valueOf(value.toString());
+ } catch (Exception ex) {
+ throw new BadQueryCriteriaException("La valeur de ce critère doit être un nombre entier ");
+ }
+ }
+
+ private BigDecimal decimalValue(Object value) throws BadQueryCriteriaException {
+ try {
+ return new BigDecimal(value.toString());
+ } catch (Exception ex) {
+ throw new BadQueryCriteriaException("La valeur de ce critère doit être un nombre décimal ");
+ }
+ }
+
+ private Collection<BigDecimal> collectionOfBigDecimal(Collection<?> collection) throws BadQueryCriteriaException {
+ Collection cleanValues = new ArrayList<>();
+ for (Object element : collection) {
+ cleanValues.add(decimalValue(element));
+ }
+ return cleanValues;
+ }
+
+ private Collection<Long> collectionOfInt(Collection<?> collection) throws BadQueryCriteriaException {
+ Collection cleanValues = new ArrayList<>();
+ for (Object element : collection) {
+ cleanValues.add(intValue(element));
+ }
+ return cleanValues;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriterion.java
new file mode 100644
index 0000000..ad3ddf3
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryCriterion.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class QueryCriterion {
+
+ private final String nomColonne;
+ private final Object criteriaValue;
+ private final Operateur operateur;
+ private final CriteriaLogicConnector criteriaLogicConnector;
+ private final List<QueryCriterion> subCriteria;
+
+ public QueryCriterion(String nomColonne, Object criteriaValue, Operateur operateur, CriteriaLogicConnector criteriaLogicConnector, List<QueryCriterion> subCriteria) {
+ this.nomColonne = nomColonne;
+ this.criteriaValue = criteriaValue;
+ this.operateur = operateur;
+ this.criteriaLogicConnector = criteriaLogicConnector;
+ this.subCriteria = subCriteria;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public Object getCriteriaValue() {
+ return criteriaValue;
+ }
+
+ public Operateur getOperateur() {
+ return operateur;
+ }
+
+ public CriteriaLogicConnector getCriteriaLogicConnector() {
+ return criteriaLogicConnector;
+ }
+
+ public List<QueryCriterion> getSubCriteria() {
+ return subCriteria;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryParam.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryParam.java
new file mode 100644
index 0000000..4235fe3
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/QueryParam.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class QueryParam {
+
+ private final String nomColonne;
+ private final Object paramValue;
+
+ public QueryParam(String nomColonne, Object paramValue) {
+ this.nomColonne = nomColonne;
+ this.paramValue = paramValue;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public Object getParamValue() {
+ return paramValue;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/SelectQueryResult.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/SelectQueryResult.java
new file mode 100644
index 0000000..4759d72
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/SelectQueryResult.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class SelectQueryResult {
+
+ private final int lastIndexRead;
+ private final List<FdxTableRow> rows;
+ private String token;
+
+ public SelectQueryResult(int lastIndexRead, List<FdxTableRow> rows) {
+ this.lastIndexRead = lastIndexRead;
+ this.rows = rows;
+ }
+
+ public int lastIndexRead() {
+ return lastIndexRead;
+ }
+
+ public List<FdxTableRow> rows() {
+ return rows;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/WhereQueryParameters.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/WhereQueryParameters.java
new file mode 100644
index 0000000..8aeab25
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/WhereQueryParameters.java
@@ -0,0 +1,97 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata;
+
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NOT_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class WhereQueryParameters {
+
+ private final QueryCriterion queryCriterion;
+
+ public WhereQueryParameters(QueryCriterion queryCriterion) {
+ this.queryCriterion = queryCriterion;
+ }
+
+ public List<QueryParam> parameters() {
+ return buildedParameters(queryCriterion);
+ }
+
+ private List<QueryParam> buildedParameters(QueryCriterion criterion) {
+
+ List<QueryParam> params = new ArrayList<>();
+
+ if (criterion == null) {
+ return params;
+ }
+
+ if (criterion.getSubCriteria().isEmpty()) {
+
+ switch (criterion.getOperateur()) {
+
+ case EQUALS:
+ case NOT_EQUALS:
+ case LIKE:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ params.add(new QueryParam(criterion.getNomColonne(), getParameterValue(criterion)));
+ break;
+
+ case BETWEEN:
+ case NOT_BETWEEN:
+ BetweenOperatorValues betweenOperatorValues = (BetweenOperatorValues) criterion.getCriteriaValue();
+ params.add(new QueryParam(criterion.getNomColonne(), betweenOperatorValues.getLowerBound()));
+ params.add(new QueryParam(criterion.getNomColonne(), betweenOperatorValues.getUpperBound()));
+ break;
+
+ case NOT_IN:
+ case IN:
+ List<?> values = (List<?>) criterion.getCriteriaValue();
+ for (Object value : values) {
+ params.add(new QueryParam(criterion.getNomColonne(), value));
+ }
+ break;
+
+ case IS_NOT_NULL:
+ case IS_NULL:
+ break;
+ }
+
+ } else {
+
+ for (QueryCriterion c : criterion.getSubCriteria()) {
+ params.addAll(buildedParameters(c));
+ }
+
+ }
+
+ return params;
+ }
+
+ private Object getParameterValue(QueryCriterion criterion) {
+ switch (criterion.getOperateur()) {
+ case LIKE:
+ return "%" + criterion.getCriteriaValue() + "%";
+ }
+ return criterion.getCriteriaValue();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskInfo.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskInfo.java
new file mode 100644
index 0000000..411c6f1
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskInfo.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import java.time.LocalDateTime;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DataProductionTaskInfo {
+
+ private DataProductionTaskType dataProductionTaskType;
+ private String codeTypeFichier;
+ private String referentielVersion;
+ private String participant;
+ private String token;
+ private DataProductionType dataProductionType = DataProductionType.ADD;
+
+ //Pour les production de type fichier nous aurons besoin du chemin du fichier
+ private String fileProductionPath;
+
+ //Pour les production de type API
+ private List<LinkedHashMap<String, Object>> datas;
+
+ //Pour les opération de mise à jour et d'update depuis l'API
+ private QueryCriterion queryCriterion;
+ private LinkedHashMap<String, Object> dataToUpdate;
+
+ private String fileName;
+ private LocalDateTime fileDate;
+
+ public DataProductionTaskType getDataProductionTaskType() {
+ return dataProductionTaskType;
+ }
+
+ public void setDataProductionTaskType(DataProductionTaskType dataProductionTaskType) {
+ this.dataProductionTaskType = dataProductionTaskType;
+ }
+
+ public String getCodeTypeFichier() {
+ return codeTypeFichier;
+ }
+
+ public void setCodeTypeFichier(String codeTypeFichier) {
+ this.codeTypeFichier = codeTypeFichier;
+ }
+
+ public String getReferentielVersion() {
+ return referentielVersion;
+ }
+
+ public void setReferentielVersion(String referentielVersion) {
+ this.referentielVersion = referentielVersion;
+ }
+
+ public String getParticipant() {
+ return participant;
+ }
+
+ public void setParticipant(String participant) {
+ this.participant = participant;
+ }
+
+ public String getFileProductionPath() {
+ return fileProductionPath;
+ }
+
+ public void setFileProductionPath(String fileProductionPath) {
+ this.fileProductionPath = fileProductionPath;
+ }
+
+ public List<LinkedHashMap<String, Object>> getDatas() {
+ return datas;
+ }
+
+ public void setDatas(List<LinkedHashMap<String, Object>> datas) {
+ this.datas = datas;
+ }
+
+ public QueryCriterion getQueryCriterion() {
+ return queryCriterion;
+ }
+
+ public void setQueryCriterion(QueryCriterion queryCriterion) {
+ this.queryCriterion = queryCriterion;
+ }
+
+ public DataProductionType getDataProductionType() {
+ return dataProductionType;
+ }
+
+ public void setDataProductionType(DataProductionType dataProductionType) {
+ this.dataProductionType = dataProductionType;
+ }
+
+ public LinkedHashMap<String, Object> getDataToUpdate() {
+ return dataToUpdate;
+ }
+
+ public void setDataToUpdate(LinkedHashMap<String, Object> dataToUpdate) {
+ this.dataToUpdate = dataToUpdate;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public LocalDateTime getFileDate() {
+ return fileDate;
+ }
+
+ public void setFileDate(LocalDateTime fileDate) {
+ this.fileDate = fileDate;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskType.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskType.java
new file mode 100644
index 0000000..19ae2a9
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/dataproduction/DataProductionTaskType.java
@@ -0,0 +1,9 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata.dataproduction;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public enum DataProductionTaskType {
+ FICHIER, API, BATCH_TOKEN_JSON, BATCH_TOKEN_FILE, COMPOSED_JSON_OBJECT;
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlParsedQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlParsedQueryCriterion.java
new file mode 100644
index 0000000..8bb21a1
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlParsedQueryCriterion.java
@@ -0,0 +1,156 @@
+/*
+ * 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.fdxcommons.tools.database.queries.metadata.jpql;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.search.EnumValue;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JpqlParsedQueryCriterion {
+
+ private final JpqlQueryCriterion queryCriterion;
+ private final Class<?> classe;
+
+ public JpqlParsedQueryCriterion(JpqlQueryCriterion queryCriterion, Class<?> classe) {
+ this.queryCriterion = queryCriterion;
+ this.classe = classe;
+ }
+
+ public JpqlQueryCriterion parsedCriterion() throws Exception {
+ return queryCriterion != null
+ ? parsedCriterion(queryCriterion)
+ : null;
+ }
+
+ private JpqlQueryCriterion parsedCriterion(JpqlQueryCriterion criterion) throws Exception {
+
+ if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty() && criterion.getCriteriaLogicConnector() != null) {
+ List<JpqlQueryCriterion> subCriteria = new ArrayList<>();
+
+ for (JpqlQueryCriterion qc : criterion.getSubCriteria()) {
+ JpqlQueryCriterion parsedCriterion = parsedCriterion(qc);
+
+ if (parsedCriterion != null) {
+ subCriteria.add(parsedCriterion);
+ }
+ }
+ if (!subCriteria.isEmpty()) {
+ return new JpqlQueryCriterion(null,
+ null,
+ null,
+ criterion.getCriteriaLogicConnector(),
+ subCriteria,
+ criterion.isEndOfTheDay()
+ );
+ }
+ } else if ((criterion.getSubCriteria() == null || criterion.getSubCriteria().isEmpty())
+ && criterion.getNomColonne() != null && !criterion.getNomColonne().isEmpty() && criterion.getOperateur() != null) {
+ Class<?> clazz = columnType(criterion.getNomColonne());
+
+ if (clazz != null) {
+
+ Object correctValue = correctValue(clazz, criterion);
+
+ if (isUnaryOperator(criterion.getOperateur()) || (correctValue != null && !correctValue.toString().isEmpty())) {
+ return new JpqlQueryCriterion(criterion.getNomColonne(),
+ correctValue,
+ criterion.getOperateur(),
+ null,
+ Arrays.asList(),
+ criterion.isEndOfTheDay()
+ );
+ }
+ }
+ }
+ return null;
+ }
+
+ private Class<?> columnType(String nomColonne) {
+ Field[] fields = classe.getDeclaredFields();
+ String[] fieldPath = nomColonne.split("\\.");
+ try {
+ return columnType(fieldPath, fields);
+ } catch (BadQueryCriteriaException ex) {
+ Logger.getLogger(JpqlParsedQueryCriterion.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ return null;
+ }
+ }
+
+ private Class<?> columnType(String[] fieldPath, Field[] fields) throws BadQueryCriteriaException {
+ Optional<Field> optField = Arrays.asList(fields).stream().filter(f -> f.getName().equals(fieldPath[0])).findFirst();
+
+ if (optField.isPresent()) {
+ if (fieldPath.length == 1) {
+ return optField.get().getType();
+ } else {
+ return columnType(Arrays.copyOfRange(fieldPath, 1, fieldPath.length), optField.get().getType().getDeclaredFields());
+ }
+ } else {
+ throw new BadQueryCriteriaException("Colonne " + fields[0] + " introuvable dans la classe " + optField.get().getDeclaringClass().getName());
+
+ }
+ }
+
+ private Object correctValue(Class<?> clazz, JpqlQueryCriterion criterion) throws IllegalAccessException, BadQueryCriteriaException, IllegalArgumentException, InvocationTargetException {
+
+ Object criteriaValue = criterion.getCriteriaValue();
+ if (criteriaValue == null) {
+ return null;
+ }
+
+ if (clazz.isEnum()) {
+
+ Method[] methods = clazz.getMethods();
+ Optional<Method> optionalMethod = Arrays.asList(methods)
+ .stream()
+ .filter(m -> m.getAnnotation(EnumValue.class) != null && Modifier.isStatic(m.getModifiers())).findFirst();
+
+ if (optionalMethod.isPresent()) {
+ Method method = optionalMethod.get();
+ return method.invoke(null, criteriaValue.toString());
+ }
+
+ return criteriaValue;
+
+ } else if (clazz.isAssignableFrom(LocalDateTime.class)) {
+ return dateTimeValue(criteriaValue.toString(), criterion.isEndOfTheDay());
+
+ } else {
+ return clazz.cast(criteriaValue);
+ }
+ }
+
+ private Object dateTimeValue(String criteriaValue, boolean endOfTheDay) {
+ ZonedDateTime zonedDateTime = ZonedDateTime.parse(criteriaValue, DateTimeFormatter.ISO_DATE_TIME);
+ LocalDateTime date = Timestamp.from(zonedDateTime.toInstant()).toLocalDateTime();
+
+ return endOfTheDay
+ ? date.toLocalDate().atTime(LocalTime.MAX)
+ : date.toLocalDate().atTime(LocalTime.MIN);
+ }
+
+ private boolean isUnaryOperator(Operateur operateur) {
+ return operateur.equals(Operateur.IS_NOT_NULL) || operateur.equals(Operateur.IS_NULL);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryCriterion.java
new file mode 100644
index 0000000..16f6a00
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryCriterion.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata.jpql;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class JpqlQueryCriterion {
+
+ private final String nomColonne;
+ private final Object criteriaValue;
+ private final Operateur operateur;
+ private final CriteriaLogicConnector criteriaLogicConnector;
+ private final List<JpqlQueryCriterion> subCriteria;
+ private final boolean endOfTheDay;
+
+ public JpqlQueryCriterion(String nomColonne, Object criteriaValue, Operateur operateur, CriteriaLogicConnector criteriaLogicConnector, List<JpqlQueryCriterion> subCriteria, boolean endOfTheDay) {
+ this.nomColonne = nomColonne;
+ this.criteriaValue = criteriaValue;
+ this.operateur = operateur;
+ this.criteriaLogicConnector = criteriaLogicConnector;
+ this.subCriteria = subCriteria;
+ this.endOfTheDay = endOfTheDay;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public Object getCriteriaValue() {
+ return criteriaValue;
+ }
+
+ public Operateur getOperateur() {
+ return operateur;
+ }
+
+ public CriteriaLogicConnector getCriteriaLogicConnector() {
+ return criteriaLogicConnector;
+ }
+
+ public List<JpqlQueryCriterion> getSubCriteria() {
+ return subCriteria;
+ }
+
+ public Boolean isEndOfTheDay() {
+ return endOfTheDay;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryParam.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryParam.java
new file mode 100644
index 0000000..875e568
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlQueryParam.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata.jpql;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class JpqlQueryParam {
+
+ private final String nomColonne;
+ private final Object paramValue;
+
+ public JpqlQueryParam(String nomColonne, Object paramValue) {
+ this.nomColonne = nomColonne;
+ this.paramValue = paramValue;
+ }
+
+ public String getNomColonne() {
+ return nomColonne;
+ }
+
+ public Object getParamValue() {
+ return paramValue;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlWhereQueryParameters.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlWhereQueryParameters.java
new file mode 100644
index 0000000..11a7786
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/metadata/jpql/JpqlWhereQueryParameters.java
@@ -0,0 +1,97 @@
+package com.megatim.fdxcommons.tools.database.queries.metadata.jpql;
+
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NOT_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IS_NULL;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class JpqlWhereQueryParameters {
+
+ private final JpqlQueryCriterion queryCriterion;
+
+ public JpqlWhereQueryParameters(JpqlQueryCriterion queryCriterion) {
+ this.queryCriterion = queryCriterion;
+ }
+
+ public List<JpqlQueryParam> parameters() {
+ return buildedParameters(queryCriterion);
+ }
+
+ private List<JpqlQueryParam> buildedParameters(JpqlQueryCriterion criterion) {
+
+ List<JpqlQueryParam> params = new ArrayList<>();
+
+ if (criterion == null) {
+ return params;
+ }
+
+ if (criterion.getSubCriteria().isEmpty()) {
+
+ switch (criterion.getOperateur()) {
+
+ case EQUALS:
+ case NOT_EQUALS:
+ case LIKE:
+ case GREATER_OR_EQUALS_THAN:
+ case GREATER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ params.add(new JpqlQueryParam(criterion.getNomColonne(), getParameterValue(criterion)));
+ break;
+
+ case BETWEEN:
+ case NOT_BETWEEN:
+ BetweenOperatorValues betweenOperatorValues = (BetweenOperatorValues) criterion.getCriteriaValue();
+ params.add(new JpqlQueryParam(criterion.getNomColonne(), betweenOperatorValues.getLowerBound()));
+ params.add(new JpqlQueryParam(criterion.getNomColonne(), betweenOperatorValues.getUpperBound()));
+ break;
+
+ case NOT_IN:
+ case IN:
+ List<?> values = (List<?>) criterion.getCriteriaValue();
+ for (Object value : values) {
+ params.add(new JpqlQueryParam(criterion.getNomColonne(), value));
+ }
+ break;
+
+ case IS_NOT_NULL:
+ case IS_NULL:
+ break;
+ }
+
+ } else {
+
+ for (JpqlQueryCriterion c : criterion.getSubCriteria()) {
+ params.addAll(buildedParameters(c));
+ }
+
+ }
+
+ return params;
+ }
+
+ private Object getParameterValue(JpqlQueryCriterion criterion) {
+ switch (criterion.getOperateur()) {
+ case LIKE:
+ return "%" + criterion.getCriteriaValue() + "%";
+ }
+ return criterion.getCriteriaValue();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/JsonDataValidationError.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/JsonDataValidationError.java
new file mode 100644
index 0000000..390a1b1
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/JsonDataValidationError.java
@@ -0,0 +1,293 @@
+/*
+ * 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.fdxcommons.tools.database.queries.validation;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.InsertionLocalDateTimeValue;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonDataValidationError {
+
+ private final ArrayList<String> errors = new ArrayList<>();
+ private final List<LinkedHashMap<String, Object>> data;
+ private final JsonStructure jsonStructure;
+
+ public JsonDataValidationError(List<LinkedHashMap<String, Object>> data, JsonStructure jsonStructure) {
+ this.data = data;
+ this.jsonStructure = jsonStructure;
+ }
+
+ public String validationError() {
+ if (errors.isEmpty()) {
+ int index = 1;
+ for (Map<String, Object> dataItem : data) {
+ String error = processDataItem(dataItem, jsonStructure);
+
+ if (error != null && !error.trim().isEmpty()) {
+ errors.add(elementNumberString(index++) + " : " + error);
+ }
+ }
+ }
+ return error();
+ }
+
+ private String processDataItem(Map<String, Object> dataItem, JsonStructure jsonStruct) {
+ StringBuilder lineError = new StringBuilder("");
+
+ //Vérifie si une colonne obligatoire est absente
+ lineError.append(addErrorForNotFoundColumn(dataItem, jsonStruct.getFields()));
+
+ for (Map.Entry<String, Object> dataItemEntry : dataItem.entrySet()) {
+
+ String columnName = dataItemEntry.getKey();
+ Object columnValue = dataItemEntry.getValue();
+
+ Optional<JsonStructure> optField = jsonStruct.getFields().stream().filter(f -> f.getName().equalsIgnoreCase(columnName)).findFirst();
+
+ if (!optField.isPresent()) {
+ lineError.append("La colonne ").append(columnName).append(" n'existe pas pour ce fichier;");
+ continue;
+ }
+ JsonStructure field = optField.get();
+
+ if (field.isCollection() || field.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ if (field.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+
+ if (field.isCollection()) {
+ if (columnValue instanceof List) {
+ List liste = (List) columnValue;
+ int i = 1;
+
+ for (Object obj : liste) {
+ if (obj instanceof Map) {
+ lineError.append(processDataItem((Map<String, Object>) obj, field));
+ } else {
+ lineError.append("L'élément No ").append(i++).append(" de la colonne '").append(columnName).append("' doit être un objet;");
+ }
+ }
+ } else {
+ lineError.append(" La donnée de la colonne '").append(columnName).append("' doit être une liste;");
+ }
+ } else {
+ if (columnValue instanceof Map) {
+ lineError.append(processDataItem((Map<String, Object>) columnValue, field));
+ } else {
+ lineError.append(" La donnée de la colonne '").append(columnName).append("' doit être un objet;");
+ }
+ }
+ } else {
+ if (columnValue instanceof List) {
+ simpleListValueError(columnValue, field);
+ } else {
+ lineError.append(" La donnée de la colonne '").append(columnName).append("' doit être une liste;");
+ }
+ }
+ } else {
+ columnValueError(lineError, field, columnValue);
+ }
+ }
+ return lineError.toString();
+ }
+
+ private String simpleListValueError(Object columnValue, JsonStructure field) {
+ List liste = (List) columnValue;
+ StringBuilder arrayError = new StringBuilder("");
+ int i = 1;
+
+ for (Object obj : liste) {
+ arrayError.append(columnValueError(obj, field, i++));
+ }
+ return arrayError.toString().trim();
+ }
+
+ private void columnValueError(StringBuilder lineError, JsonStructure field, Object columnValue) {
+ String error = columnValueError(columnValue, field);
+ if (error != null && !error.trim().isEmpty()) {
+ lineError.append(error.trim());
+ }
+ }
+
+ private String error() {
+ StringBuilder stringBuilder = new StringBuilder("");
+ errors.forEach(e -> {
+ if (e != null && !e.trim().isEmpty()) {
+ stringBuilder.append(e.trim()).append("\n");
+ }
+ }
+ );
+ return stringBuilder.toString();
+ }
+
+ private String addErrorForNotFoundColumn(Map<String, Object> dataItem, List<JsonStructure> fields) {
+ StringBuilder message = new StringBuilder("");
+
+ fields.forEach(f -> {
+ String error = addErrorForNotFoundColumn(dataItem, f);
+ if (!error.isEmpty()) {
+ message.append("\n").append(error);
+ }
+ });
+ return message.toString();
+ }
+
+ private String addErrorForNotFoundColumn(Map<String, Object> dataItem, JsonStructure jsonStruct) {
+ String fieldName = jsonStruct.getName().toLowerCase();
+ if (jsonStruct.isRequired() && !columnNameExist(dataItem, fieldName)) {
+ return "La colonne " + fieldName + " est manquante. ";
+ }
+ return "";
+ }
+
+ private String columnValueError(Object columnValue, JsonStructure jsonStruct, int i) {
+ TypeDonnee typeDonnee = jsonStruct.getTypeDonnee();
+
+ switch (typeDonnee) {
+ case ALPHANUMERIQUE:
+ if (!isAlphaNumericColumn(columnValue)) {
+ return "L'élément No " + i + " doit être alphanumérique";
+ } else if (!lengthLowerOrEquals((String) columnValue, jsonStruct.getLengthh())) {
+ return "La taille de l'élément No " + i + " doit être inférieure ou égale à" + jsonStruct.getLengthh() + ";";
+ }
+ break;
+ case DECIMAL:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDouble(stringValue)) {
+ return "L'élément No " + i + " doit être décimale";
+ } else if (!lengthLowerOrEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de l'élément No " + i + " doit être inférieure ou égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ }
+ break;
+ case NUMERIQUE:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isLong(stringValue)) {
+ return "L'élément No " + i + " doit être numérique;";
+ } else if (!lengthLowerOrEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de l'élément No " + i + " doit être inférieure ou égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ }
+ break;
+ case DATE:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDate(stringValue, jsonStruct.getFormatDate(), true)) {
+ return "L'élément No " + i + " doit être une date";
+ } else if (!lengthEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de l'élément No " + i + " doit être égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ try {
+ new InsertionLocalDateTimeValue(jsonStruct.getFormatDate(), columnValue).value();
+ } catch (LocalDateTimeValueParseError ex) {
+ return "Impossible de parser la valeur " + stringValue + " au format " + jsonStruct.getFormatDate() + " pour l'élément No " + i + ";";
+ }
+
+ }
+ break;
+ default:
+ break;
+ }
+
+ return "";
+ }
+
+ private String columnValueError(Object columnValue, JsonStructure jsonStruct) {
+ TypeDonnee typeDonnee = jsonStruct.getTypeDonnee();
+
+ switch (typeDonnee) {
+ case ALPHANUMERIQUE:
+ if (!isAlphaNumericColumn(columnValue)) {
+ return "La colonne " + jsonStruct.getName() + " doit être alphanumérique;";
+ } else if (!lengthLowerOrEquals((String) columnValue, jsonStruct.getLengthh())) {
+ return "La taille de la colonne " + jsonStruct.getName() + " doit être inférieure ou égale à" + jsonStruct.getLengthh() + ";";
+ }
+ break;
+ case DECIMAL:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDouble(stringValue)) {
+ return "La colonne " + jsonStruct.getName() + " doit être décimale";
+ } else if (!lengthLowerOrEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de la colonne " + jsonStruct.getName() + " doit être inférieure ou égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ }
+ break;
+ case NUMERIQUE:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isLong(stringValue)) {
+ return "La colonne " + jsonStruct.getName() + " doit être numérique;";
+ } else if (!lengthLowerOrEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de la colonne " + jsonStruct.getName() + " doit être inférieure ou égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ }
+ break;
+ case DATE:
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDate(stringValue, jsonStruct.getFormatDate(), true)) {
+ return "La colonne " + jsonStruct.getName() + " doit être une date;";
+ } else if (!lengthEquals(stringValue, jsonStruct.getLengthh())) {
+ return "La taille de la colonne " + jsonStruct.getName() + " doit être égale à " + jsonStruct.getLengthh() + ";";
+ }
+
+ try {
+ new InsertionLocalDateTimeValue(jsonStruct.getFormatDate(), columnValue).value();
+ } catch (LocalDateTimeValueParseError ex) {
+ return "Impossible de parser la valeur " + stringValue + " au format " + jsonStruct.getFormatDate() + " pour la colonne " + jsonStruct.getName() + ";";
+ }
+
+ }
+ break;
+ default:
+ break;
+ }
+
+ return "";
+ }
+
+ private boolean isAlphaNumericColumn(Object columnValue) {
+ return (columnValue == null || columnValue instanceof String);
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+
+ private String elementNumberString(int index) {
+ return "Elément No" + index;
+ }
+
+ private boolean columnNameExist(Map<String, Object> dataItem, String jsonStructName) {
+ return dataItem.entrySet().stream().map(e -> e.getKey()).filter(key -> key.trim().toLowerCase().equals(jsonStructName)).findAny().isPresent();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/TableDataValidationError.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/TableDataValidationError.java
new file mode 100644
index 0000000..172c8b8
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/queries/validation/TableDataValidationError.java
@@ -0,0 +1,174 @@
+package com.megatim.fdxcommons.tools.database.queries.validation;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.InsertionLocalDateTimeValue;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableDataValidationError {
+
+ private final ArrayList<String> errors = new ArrayList<>();
+
+ private final Map<String, ColumnDefinition> columnNameToColumnDefinition;
+ private final List<ColumnDefinition> columnDefinitions;
+ private final List<LinkedHashMap<String, Object>> data;
+ private final boolean withOptionalColumn;
+
+ public TableDataValidationError(List<LinkedHashMap<String, Object>> data, List<ColumnDefinition> columnDefinitions) {
+ this(data, columnDefinitions, false);
+ }
+
+ public TableDataValidationError(List<LinkedHashMap<String, Object>> data, List<ColumnDefinition> columnDefinitions, boolean withOptionalColumn) {
+ this.data = data;
+ this.withOptionalColumn = withOptionalColumn;
+ this.columnDefinitions = columnDefinitions;
+ this.columnNameToColumnDefinition = columnDefinitions.stream().collect(Collectors.toMap(c -> c.getName().trim().toLowerCase(), c -> c));
+ }
+
+ public String validationError() {
+ if (errors.isEmpty()) {
+ int index = 1;
+ for (Map<String, Object> dataItem : data) {
+ processDataItem(dataItem, index++);
+ }
+ }
+ return error();
+ }
+
+ private String error() {
+ StringBuilder stringBuilder = new StringBuilder("");
+ errors.forEach(e -> {
+ if (e != null && !e.isEmpty()) {
+ stringBuilder.append(e).append("\n");
+ }
+ }
+ );
+ return stringBuilder.toString();
+ }
+
+ private void processDataItem(Map<String, Object> dataItem, int index) {
+
+ for (Map.Entry<String, Object> dataItemEntry : dataItem.entrySet()) {
+
+ String columnName = dataItemEntry.getKey();
+ Object columnValue = dataItemEntry.getValue();
+
+ ColumnDefinition columnDefinition = columnNameToColumnDefinition.get(columnName.trim().toLowerCase());
+ if (columnDefinition == null) {
+ errors.add("La colonne " + columnName + " n'existe pas pour ce fichier. " + lineNumberString(index));
+ return;
+ }
+
+ String error = columnValueError(columnValue, columnDefinition);
+ if (error != null && !error.isEmpty()) {
+ errors.add(error + " " + lineNumberString(index));
+ }
+
+ }
+
+ if (!withOptionalColumn) {
+ addErrorForNotFoundColumn(dataItem, index);
+ }
+ }
+
+ private void addErrorForNotFoundColumn(Map<String, Object> dataItem, int index) {
+ columnDefinitions.forEach(columnDefinition -> {
+ String columnDefinitionName = columnDefinition.getName().toLowerCase();
+ if (!columnNameExist(dataItem, columnDefinitionName)) {
+ errors.add("La colonne " + columnDefinitionName + " est manquante dans la requête. " + lineNumberString(index));
+ }
+ });
+ }
+
+ private String columnValueError(Object columnValue, ColumnDefinition columnDefinition) {
+ String columnType = columnDefinition.getTypeDonnee();
+
+ if (columnType.equals(TypeDonnee.ALPHANUMERIQUE.toString())) {
+
+ if (!isAlphaNumericColumn(columnValue)) {
+ return "La colonne " + columnDefinition.getName() + " doit être alpha numérique";
+ } else if (!lengthLowerOrEquals((String) columnValue, columnDefinition.getTaille())) {
+ return "La taille de la colonne " + columnDefinition.getName() + " doit être inférieure ou égale à" + columnDefinition.getTaille();
+ }
+
+ } else if (columnType.equals(TypeDonnee.DECIMAL.toString())) {
+
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDouble(stringValue)) {
+ return "La colonne " + columnDefinition.getName() + " doit être décimale";
+ } else if (!lengthLowerOrEquals(stringValue, columnDefinition.getTaille())) {
+ return "La taille de la colonne " + columnDefinition.getName() + " doit être inférieure ou égale à " + columnDefinition.getTaille();
+ }
+
+ }
+
+ } else if (columnType.equals(TypeDonnee.NUMERIQUE.toString())) {
+
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isLong(stringValue)) {
+ return "La colonne " + columnDefinition.getName() + " doit être numérique";
+ } else if (!lengthLowerOrEquals(stringValue, columnDefinition.getTaille())) {
+ return "La taille de la colonne " + columnDefinition.getName() + " doit être inférieure ou égale à " + columnDefinition.getTaille();
+ }
+
+ }
+
+ } else if (columnType.equals(TypeDonnee.DATE.toString())) {
+
+ if (columnValue != null) {
+
+ String stringValue = columnValue.toString();
+ if (!GenericValidator.isDate(stringValue, columnDefinition.getFormatDate(), true)) {
+ return "La colonne " + columnDefinition.getName() + " doit être une date";
+ } else if (!lengthEquals(stringValue, columnDefinition.getTaille())) {
+ return "La taille de la colonne " + columnDefinition.getName() + " doit être égale à " + columnDefinition.getTaille();
+ }
+
+ try {
+ new InsertionLocalDateTimeValue(columnDefinition.getFormatDate(), columnValue).value();
+ } catch (LocalDateTimeValueParseError ex) {
+ return "Impossible de parser la valeur " + stringValue + " au format " + columnDefinition.getFormatDate() + " pour la colonne " + columnDefinition.getName();
+ }
+
+ }
+
+ }
+
+ return null;
+ }
+
+ private boolean isAlphaNumericColumn(Object columnValue) {
+ return (columnValue == null || columnValue instanceof String);
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+
+ private String lineNumberString(int index) {
+ return "Ligne " + index;
+ }
+
+ private boolean columnNameExist(Map<String, Object> dataItem, String columnDefinitionName) {
+ return dataItem.entrySet().stream().map(e -> e.getKey()).filter(key -> key.trim().toLowerCase().equals(columnDefinitionName)).findAny().isPresent();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/ApiJsonFdxTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/ApiJsonFdxTable.java
new file mode 100644
index 0000000..995fa18
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/ApiJsonFdxTable.java
@@ -0,0 +1,72 @@
+/*
+ * 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.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.queries.json.CreateJsonTableIfNotExistQuery;
+import com.megatim.fdxcommons.tools.database.contrat.JsonStructureIterator;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import com.megatim.fdxcommons.tools.database.queries.JsonDelete;
+import com.megatim.fdxcommons.tools.database.queries.JsonFdxApiInsert;
+import com.megatim.fdxcommons.tools.database.queries.JsonSelectQuery;
+import com.megatim.fdxcommons.tools.database.queries.JsonUpdate;
+import com.megatim.fdxcommons.tools.database.queries.metadata.AliasedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataIterator;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.utils.JsonTableUtil;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ApiJsonFdxTable extends JsonFdxTable {
+
+ public ApiJsonFdxTable(String referentielVersion, String codeTypeFichier, JsonStructure jsonStructure) {
+ super(referentielVersion, codeTypeFichier, jsonStructure);
+ }
+
+ @Override
+ public void createTable(Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = new JsonStructureIterator(tableName.name(connection), jsonStructure).tableDefinition();
+ new CreateJsonTableIfNotExistQuery(connection, new FdxApiColumnDefinitions(), tableDefinition).execute();
+ }
+
+ public void insert(List<LinkedHashMap<String, Object>> originalData, Long dataProductionId, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ JsonFdxParsedData fdxParsedData = new JsonFdxParsedData(originalData, jsonStructure);
+ JsonFdxParsedDataIterator parsedDataIterator = new JsonFdxParsedDataIterator(tableName.name(connection), fdxParsedData);
+ new JsonFdxApiInsert(connection, dataProductionId).insert(parsedDataIterator);
+ }
+
+ @Override
+ public void update(LinkedHashMap<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ AliasedQueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias);
+ Map<Long, Object> matchedData = new JsonSelectQuery(tableDefinition, aliasedQueryCriterion.aliasedQueryCriterion(), connection, tablesNameToAlias).execute();
+ List<ColumnDefinition> columnsDefinition = new JsonStructureIterator(tableName.name(connection), jsonStructure).columnsDefinitionWithFullQualifiedName();
+
+ new JsonUpdate(connection, matchedData, columnsDefinition, tableName.name(connection), dataToUpdate, dataProduction).update();
+ }
+
+ public void delete(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ AliasedQueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias);
+ Map<Long, Object> matchedData = new JsonSelectQuery(tableDefinition, aliasedQueryCriterion.aliasedQueryCriterion(), connection, tablesNameToAlias).execute();
+
+ new JsonDelete(connection, matchedData, tableName.name(connection), tableDefinition, dataProduction).delete();
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxApiTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxApiTable.java
new file mode 100644
index 0000000..f2d124b
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxApiTable.java
@@ -0,0 +1,133 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.tools.database.queries.DataWithTokenToDataProductionQuery;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.queries.FdxApiInsert;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierUpdateMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.MoreThanOneTableDataNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.TableDataNotFoundException;
+import com.megatim.fdxcommons.tools.database.queries.CreateTableIfNotExistQuery;
+import com.megatim.fdxcommons.tools.database.queries.FdxUpdate;
+import com.megatim.fdxcommons.tools.database.queries.metadata.ApiTypeFichierInsertData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.ApiUpdateTypeFichierData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxParsedData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxParsedDataRow;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxTableDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.ParsedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.TokenColumnDefinition;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxApiTable extends FdxTable {
+
+ public FdxApiTable(String codeTypeFichier, String referentielVersion) {
+ super(codeTypeFichier, referentielVersion);
+ }
+
+ @Override
+ public void createTable(List<ColumnDefinition> columnsDefinition, Connection connection) throws NamingException, SQLException, Exception {
+ new CreateTableIfNotExistQuery(tableName, columnsDefinition, new FdxApiColumnDefinitions(), connection).execute();
+ }
+
+ @Override
+ public void deleteOne(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+
+ stopIfTableIsReferentiel(connection);
+
+ ParsedQueryCriterion parsedQueryCriterion = parsedQueryCriterion(queryCriterion, connection);
+
+ stopIfTableDataNotFound(parsedQueryCriterion, connection);
+
+ processDelete(parsedQueryCriterion.parsedCriterion(), dataProduction, connection);
+
+ }
+
+ @Override
+ public void updateOne(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection)
+ throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+
+ stopIfTableIsReferentiel(connection);
+
+ ParsedQueryCriterion parsedQueryCriteria = parsedQueryCriterion(queryCriterion, connection);
+
+ stopIfTableDataNotFound(parsedQueryCriteria, connection);
+ stopIfNotOneTableDataFound(parsedQueryCriteria, connection);
+
+ processUpdate(dataToUpdate, parsedQueryCriteria.parsedCriterion(), dataProduction, connection);
+
+ }
+
+ @Override
+ public void update(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+
+ stopIfTableIsReferentiel(connection);
+
+ ParsedQueryCriterion parsedQueryCriterion = parsedQueryCriterion(queryCriterion, connection);
+
+ stopIfTableDataNotFound(parsedQueryCriterion, connection);
+
+ processUpdate(dataToUpdate, parsedQueryCriterion.parsedCriterion(), dataProduction, connection);
+
+ }
+
+ public void insert(List<LinkedHashMap<String, Object>> originalData, Long dataProductionId, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ FdxParsedData fdxParsedData = new FdxParsedData(originalData, tableDefinition(connection).tableDefinition());
+ TypeFichierInsertMetaData insertMetaData = new ApiTypeFichierInsertData(tableName.name(connection), fdxParsedData);
+ new FdxApiInsert(connection, dataProductionId).insert(insertMetaData);
+ }
+
+ public void insert(List<LinkedHashMap<String, Object>> originalData, String token, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ FdxParsedData fdxParsedData = new FdxParsedData(originalData, tableDefinition(connection).tableDefinition());
+ TypeFichierInsertMetaData insertMetaData = new ApiTypeFichierInsertData(tableName.name(connection), fdxParsedData);
+ new FdxApiInsert(connection, null).insert(insertMetaData, token);
+ }
+
+ public void linkDataWithTokenToDataProduction(CommonDataProduction dataProduction, String token, Connection connection) throws Exception {
+ new DataWithTokenToDataProductionQuery(connection, dataProduction, token, tableName.name(connection)).execute();
+ }
+
+ public void deleteDataLinkedToToken(String token, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ ParsedQueryCriterion parsedQueryCriterion = parsedQueryCriterion(new QueryCriterion(new TokenColumnDefinition().name(), token, Operateur.EQUALS, null, Arrays.asList()), connection);
+ processPermanentDelete(parsedQueryCriterion.parsedCriterion(), connection);
+ }
+
+ private void processUpdate(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws NamingException, Exception, SQLException {
+ FdxTableDefinition tableDefinition = tableDefinition(connection);
+
+ FdxParsedDataRow parsedDataRow = new FdxParsedDataRow(dataToUpdate, tableDefinition.tableDefinition());
+ TypeFichierUpdateMetaData updateMetaData = new ApiUpdateTypeFichierData(tableName.name(connection), parsedDataRow);
+ new FdxUpdate(connection, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), updateMetaData, dataProduction).update();
+ }
+
+ private void stopIfTableDataNotFound(ParsedQueryCriterion parsedQueryCriterion, Connection connection) throws TableDataNotFoundException, Exception {
+ Long count = count(parsedQueryCriterion.parsedCriterion(), connection);
+ if (count == 0) {
+ throw new TableDataNotFoundException("Aucune valeur trouvée dans la table pour les critères indiqués");
+ }
+ }
+
+ private void stopIfNotOneTableDataFound(ParsedQueryCriterion parsedQueryCriterion, Connection connection) throws TableDataNotFoundException, Exception {
+ Long count = count(parsedQueryCriterion.parsedCriterion(), connection);
+ if (count != 1) {
+ throw new MoreThanOneTableDataNotFoundException("Plus d'une ligne trouvée dans la table pour les critères indiqués");
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxConsultationTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxConsultationTable.java
new file mode 100644
index 0000000..d35c566
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxConsultationTable.java
@@ -0,0 +1,96 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+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.tools.database.contrat.TypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.contrat.TypeFichierInsertMetaData;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import com.megatim.fdxcommons.tools.database.queries.CreateTableIfNotExistQuery;
+import com.megatim.fdxcommons.tools.database.queries.DeleteTableDataQuery;
+import com.megatim.fdxcommons.tools.database.queries.FdxConsultationInsert;
+import com.megatim.fdxcommons.tools.database.queries.metadata.ConsultationTypeFichierInsertData;
+import com.megatim.fdxcommons.tools.database.queries.metadata.DefaultTypeFichierDataRow;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.naming.NamingException;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxConsultationTable extends FdxTable {
+
+ public FdxConsultationTable(String codeTypeFichier, String referentielVersion) {
+ super(codeTypeFichier, referentielVersion);
+ }
+
+ @Override
+ @Transactional
+ public synchronized void createTable(List<ColumnDefinition> columnsDefinition, Connection connection) throws NamingException, SQLException, Exception {
+ new CreateTableIfNotExistQuery(tableName, columnsDefinition, new FdxConsultationColumnDefinitions(), connection).execute();
+ }
+
+ public synchronized long insert(List<FdxTableRow> originalData, Long dataProductionId, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ if (originalData != null && !originalData.isEmpty()) {
+ List<TypeFichierDataRow> rows = new ArrayList<>();
+ originalData.stream().forEach(row -> {
+ Map<String, Object> entity = new HashMap<>();
+ row.getDataColumns().stream().forEach(cd -> {
+ entity.put(cd.getName(), cd.getValue());
+ });
+ rows.add(new DefaultTypeFichierDataRow(entity));
+ });
+
+ TypeFichierInsertMetaData insertMetaData = new ConsultationTypeFichierInsertData(rows, tableName.name(connection));
+ return new FdxConsultationInsert(connection, dataProductionId).insert(insertMetaData);
+
+ } else {
+ return -1;
+ }
+ }
+
+ public void removeUnCompleteData(Connection connection, Long dataProductionId) throws SQLException, Exception {
+
+ QueryCriterion criterion = new QueryCriterion(null, null, null, CriteriaLogicConnector.AND,
+ Arrays.asList(
+ new QueryCriterion(new EnCoursProductionColumnDefinition().name(), true, Operateur.EQUALS, null,
+ Arrays.asList(
+ new QueryCriterion(null, null, null, CriteriaLogicConnector.OR,
+ Arrays.asList(
+ new QueryCriterion(new DataProductionIdColumnDefinition().name(), dataProductionId, Operateur.EQUALS, null, Arrays.asList()),
+ new QueryCriterion(new DataProductionUpdateIdColumnDefinition().name(), dataProductionId, Operateur.EQUALS, null, Arrays.asList())
+ )
+ )
+ )
+ )
+ )
+ );
+
+ new DeleteTableDataQuery(tableName.name(connection), connection, criterion).execute();
+ }
+
+ @Override
+ public synchronized void deleteOne(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ }
+
+ @Override
+ public synchronized void updateOne(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ }
+
+ @Override
+ public synchronized void update(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTable.java
new file mode 100644
index 0000000..9769e9a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTable.java
@@ -0,0 +1,251 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.queries.*;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import com.megatim.fdxcommons.tools.database.exceptions.TableNotCummulativeException;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxTableDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.ParsedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.SelectQueryResult;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class FdxTable {
+
+ protected final TableName tableName;
+ protected final String codeTypeFichier;
+ protected final String referentielVersion;
+
+ protected FdxTable(String codeTypeFichier, String referentielVersion) {
+ this.tableName = new FdxTableName(referentielVersion, codeTypeFichier);
+ this.codeTypeFichier = codeTypeFichier;
+ this.referentielVersion = referentielVersion;
+ }
+
+ public boolean checkIfTableExists(Connection connection) throws SQLException {
+ return new TableDefinitionQueries(tableName.name(connection), connection).tableExists();
+ }
+
+ public boolean checkIfConstraintExists(Connection connection) throws SQLException {
+ final String name = tableName.name(connection);
+ String constraintName = name + "_pkey";
+ return new TableDefinitionQueries(tableName.name(connection), connection).constraintExists(constraintName);
+ }
+
+ public boolean checkIfColumnExists(Connection connection, String columnName) throws SQLException {
+ return new TableDefinitionQueries(tableName.name(connection), connection).columnExists(columnName);
+ }
+
+ public void addAppColumn(Connection connection, AppColumnDefinition appColumn) throws SQLException {
+ new TableDefinitionQueries(tableName.name(connection), connection).addAppColumn(appColumn);
+ }
+
+ public void dropAppColumn(Connection connection, AppColumnDefinition appColumn) throws SQLException {
+ new TableDefinitionQueries(tableName.name(connection), connection).dropAppColumn(appColumn);
+ }
+
+ public void dropPkConstraint(Connection connection) throws SQLException {
+ final String name = tableName.name(connection);
+ String constraintName = name + "_pkey";
+ new TableDefinitionQueries(name, connection).dropConstraint(constraintName);
+ }
+
+ public void addPkConstraint(Connection connection) throws SQLException {
+ final String name = tableName.name(connection);
+ String constraintName = name + "_pkey";
+ new TableDefinitionQueries(name, connection).addPkConstraint(constraintName);
+ }
+
+ public FdxTableColumns tableColumns(Connection connection) {
+ return new FdxTableColumns(tableName, connection);
+ }
+
+ public FdxTableDefinition tableDefinition(Connection connection) {
+ return new FdxTableDefinition(referentielVersion, codeTypeFichier, connection);
+ }
+
+ public String latestDataProductionToken(Connection connection) throws SQLException {
+ return new LatestDataProductionTokenQuery(connection, referentielVersion, codeTypeFichier).execute();
+ }
+
+ public synchronized SelectQueryResult selectResult(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ QueryCriterion finalCriterion = tableDefinition(connection).isReferentiel()
+ ? addLatestDataProductionCriterion(queryCriterion, connection)
+ : queryCriterion;
+ SelectQueryResult result = new SelectQuery(tableName.name(connection), connection, parsedQueryCriterion(finalCriterion, connection).parsedCriterion(), Arrays.asList(), false).execute();
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public synchronized SelectQueryResult selectResult(Connection connection, Long dataProductionId) throws NamingException, SQLException, Exception {
+ QueryCriterion queryCriterion = new QueryCriterion(new DataProductionIdColumnDefinition().name(),
+ dataProductionId,
+ Operateur.EQUALS,
+ CriteriaLogicConnector.AND,
+ Arrays.asList());
+ SelectQueryResult result = new SelectQuery(tableName.name(connection), connection, queryCriterion, Arrays.asList(), false).execute();
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public synchronized SelectQueryResult selectResultWithAllColumns(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ QueryCriterion finalCriterion = tableDefinition(connection).isReferentiel()
+ ? addLatestDataProductionCriterion(queryCriterion, connection)
+ : queryCriterion;
+ SelectQueryResult result = new SelectQuery(tableName.name(connection), connection, parsedQueryCriterion(finalCriterion, connection).parsedCriterion(), Arrays.asList(), true).execute();
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public synchronized SelectQueryResult selectResult(QueryCriterion queryCriterion, Connection connection, int limit, int offset) throws NamingException, SQLException, Exception {
+ QueryCriterion finalCriterion = tableDefinition(connection).isReferentiel()
+ ? addLatestDataProductionCriterion(queryCriterion, connection)
+ : queryCriterion;
+ SelectQueryResult result = new SelectQuery(tableName.name(connection), connection, parsedQueryCriterion(finalCriterion, connection).parsedCriterion(), Arrays.asList(), limit, offset, false).execute();
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public synchronized SelectQueryResult selectResultRegardlessOfNatureProduction(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ SelectQueryResult result = new SelectQuery(tableName.name(connection), connection, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), Arrays.asList(), true).execute();
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public synchronized Long countRegardlessOfNatureProduction(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ List<String[]> results = new CountQuery(
+ tableName.name(connection),
+ connection,
+ parsedQueryCriterion(queryCriterion, connection).parsedCriterion(),
+ Arrays.asList()
+ ).execute();
+ return !results.isEmpty()
+ ? Long.valueOf(results.get(0)[0])
+ : 0;
+ }
+
+ public synchronized Long count(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ QueryCriterion finalCriterion = tableDefinition(connection).isReferentiel()
+ ? addLatestDataProductionCriterion(queryCriterion, connection)
+ : queryCriterion;
+ List<String[]> results = new CountQuery(
+ tableName.name(connection),
+ connection,
+ parsedQueryCriterion(finalCriterion, connection).parsedCriterion(),
+ Arrays.asList()
+ ).execute();
+ return !results.isEmpty()
+ ? Long.valueOf(results.get(0)[0])
+ : 0;
+ }
+
+ public synchronized List<String[]> count(QueryCriterion queryCriterion, Connection connection, List<String> groupingColumns) throws NamingException, SQLException, Exception {
+ QueryCriterion finalCriterion = tableDefinition(connection).isReferentiel()
+ ? addLatestDataProductionCriterion(queryCriterion, connection)
+ : queryCriterion;
+ return new CountQuery(
+ tableName.name(connection),
+ connection,
+ parsedQueryCriterion(finalCriterion, connection).parsedCriterion(),
+ groupingColumns
+ ).execute();
+ }
+
+ public synchronized List<String[]> aggregate(Connection connection, String targetColumn, List<String> groupingColumns, FonctionAggregation fonctionAggregation, QueryCriterion queryCriterion) throws NamingException, SQLException, Exception {
+ return new AggregationQuery(
+ tableName.name(connection),
+ connection,
+ parsedQueryCriterion(queryCriterion, connection).parsedCriterion(),
+ targetColumn,
+ groupingColumns,
+ fonctionAggregation
+ ).execute();
+ }
+
+ public synchronized void delete(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception {
+
+ stopIfTableIsReferentiel(connection);
+
+ ParsedQueryCriterion parsedQueryCriterion = parsedQueryCriterion(queryCriterion, connection);
+
+ processDelete(parsedQueryCriterion.parsedCriterion(), dataProduction, connection);
+
+ }
+
+ public ParsedQueryCriterion parsedQueryCriterion(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException {
+ return new ParsedQueryCriterion(queryCriterion, tableColumns(connection), tableDefinition(connection).tableDefinition().getColumnDefinitions());
+ }
+
+ protected void processDelete(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws NamingException, Exception, SQLException {
+ new DeleteQuery(tableName.name(connection), connection, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), dataProduction).execute();
+ }
+
+ protected void processPermanentDelete(QueryCriterion queryCriterion, Connection connection) throws NamingException, Exception, SQLException {
+ new PermanentDeleteQuery(tableName.name(connection), connection, parsedQueryCriterion(queryCriterion, connection).parsedCriterion()).execute();
+ }
+
+ protected void stopIfTableIsReferentiel(Connection connection) throws SQLException, NamingException, TableNotCummulativeException {
+ if (tableDefinition(connection).isReferentiel()) {
+ throw new TableNotCummulativeException("Opération non autorisée car la table est référentielle");
+ }
+ }
+
+ public abstract void createTable(List<ColumnDefinition> columnsDefinition, Connection connection) throws NamingException, SQLException, Exception;
+
+ public abstract void deleteOne(QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception;
+
+ public abstract void updateOne(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception;
+
+ public abstract void update(Map<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception;
+
+ public TableName getTableName() {
+ return tableName;
+ }
+
+ private QueryCriterion addLatestDataProductionCriterion(QueryCriterion queryCriterion, Connection connection) throws SQLException {
+ Long latestDataProductionId = new MaxDataProductionIdQuery(tableName.name(connection), connection).execute();
+ if (latestDataProductionId > 0) {
+
+ return new QueryCriterion(null,
+ null,
+ null,
+ CriteriaLogicConnector.AND,
+ Arrays.asList(queryCriterion,
+ new QueryCriterion(new DataProductionIdColumnDefinition().name(),
+ latestDataProductionId,
+ Operateur.EQUALS,
+ null,
+ Arrays.asList())
+ )
+ );
+ } else {
+ return queryCriterion;
+ }
+ }
+
+ private void setToken(Connection connection, SelectQueryResult result) throws SQLException {
+ String token = latestDataProductionToken(connection);
+ result.setToken(token);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumn.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumn.java
new file mode 100644
index 0000000..d099b95
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumn.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableColumn {
+
+ private final String name;
+ private final int type;
+ private final int position;
+ private final int size;
+
+ public FdxTableColumn(String name, int type, int position, int size) {
+ this.name = name;
+ this.type = type;
+ this.position = position;
+ this.size = size;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public int getSize() {
+ return size;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumnData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumnData.java
new file mode 100644
index 0000000..8484eff
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumnData.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableColumnData {
+
+ private final Object value;
+ private final String name;
+ private final int position;
+
+ public FdxTableColumnData(Object value, String name, int position) {
+ this.value = value;
+ this.name = name;
+ this.position = position;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumns.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumns.java
new file mode 100644
index 0000000..516480a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableColumns.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.tools.exceptions.FdxColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableColumns {
+
+ private final TableName tableName;
+ private final Connection connection;
+ private final List<FdxTableColumn> fdxTableColumns = new ArrayList<>();
+
+ public FdxTableColumns(TableName tableName, Connection connection) {
+ this.tableName = tableName;
+ this.connection = connection;
+ }
+
+ public List<FdxTableColumn> columns() throws SQLException, NamingException {
+ if (fdxTableColumns.isEmpty()) {
+ DatabaseMetaData metaData = connection.getMetaData();
+ ResultSet columns = metaData.getColumns(null, null, tableName.name(connection), null);
+ while (columns.next()) {
+ String name = columns.getString("COLUMN_NAME");
+ int type = columns.getInt("DATA_TYPE");
+ int position = columns.getInt("ORDINAL_POSITION");
+ int size = columns.getInt("COLUMN_SIZE");
+ fdxTableColumns.add(new FdxTableColumn(name, type, position, size));
+ }
+
+ Collections.sort(fdxTableColumns, (c1, c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+ }
+ return fdxTableColumns;
+ }
+
+ public FdxTableColumn column(String name) throws FdxColumnNotFoundException, SQLException, NamingException {
+ return columns()
+ .stream()
+ .filter(c -> c.getName().equals(name))
+ .findFirst()
+ .orElseThrow(() -> new FdxColumnNotFoundException("Colonne introuvable dans la table"));
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableName.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableName.java
new file mode 100644
index 0000000..e18338d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableName.java
@@ -0,0 +1,89 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Objects;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableName implements TableName {
+
+ private final String referentielVersion;
+ private final String codeTypeFichier;
+ private String refVersionToUse = null;
+
+ public FdxTableName(String referentielVersion, String codeTypeFichier) {
+ this.referentielVersion = referentielVersion;
+ this.codeTypeFichier = codeTypeFichier;
+ }
+
+ @Override
+ public String name(Connection connection) throws SQLException {
+ if (refVersionToUse == null) {
+ refVersionToUse(connection);
+ }
+ return refVersionToUse != null && !refVersionToUse.isEmpty()
+ ? "ref" + refVersionToUse.toLowerCase() + "_" + codeTypeFichier.toLowerCase()
+ : "ref" + referentielVersion.toLowerCase() + "_" + codeTypeFichier.toLowerCase();
+ }
+
+ private void refVersionToUse(Connection connection) throws SQLException {
+
+ try ( PreparedStatement statement = connection.prepareStatement(query())) {
+ ResultSet resultSet = statement.executeQuery();
+
+ while (resultSet.next()) {
+ refVersionToUse = resultSet.getString(1);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final FdxTableName other = (FdxTableName) obj;
+
+ if (refVersionToUse != null && other.getRefVersionToUse() != null) {
+ return refVersionToUse.equals(other.getRefVersionToUse());
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 79 * hash + Objects.hashCode(this.referentielVersion);
+ hash = 79 * hash + Objects.hashCode(this.codeTypeFichier);
+ return hash;
+ }
+
+ public String getRefVersionToUse() {
+ return refVersionToUse;
+ }
+
+ private String query() {
+ return "SELECT DISTINCT r.referentielVersion"
+ + " FROM referentielIntegrationHistorique r"
+ + " JOIN ref_int_historique_depending_refs rd"
+ + " ON r.codetypefichier = rd.codetypefichier"
+ + " AND r.referentielVersion = rd.referentielVersion"
+ + " WHERE rd.dependingreferentiels = '" + referentielVersion + "'"
+ + " AND r.codetypefichier = '" + codeTypeFichier + "'";
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableRow.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableRow.java
new file mode 100644
index 0000000..d2b0d3f
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/FdxTableRow.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxcommons.tools.database.tables;
+
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxTableRow {
+
+ final long number;
+ final List<FdxTableColumnData> dataColumns;
+
+ public FdxTableRow(long number, List<FdxTableColumnData> dataColumns) {
+ this.number = number;
+ this.dataColumns = dataColumns;
+ }
+
+ public long getNumber() {
+ return number;
+ }
+
+ public List<FdxTableColumnData> getDataColumns() {
+ return dataColumns;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JpqlTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JpqlTable.java
new file mode 100644
index 0000000..d97292b
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JpqlTable.java
@@ -0,0 +1,52 @@
+/*
+ * 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.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.tables.dto.JpqlQueryElement;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.database.queries.jpql.JqplQueryString;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlParsedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlWhereQueryParameters;
+import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToJqplQueryCriterion;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JpqlTable {
+
+ private final CriteriaEntityFromView criterion;
+ private final Class<?> classe;
+
+ public JpqlTable(CriteriaEntityFromView criterion, Class<?> classe) {
+ this.criterion = criterion;
+ this.classe = classe;
+ }
+
+ public JpqlQueryElement selectQuery(List<OrderByDefinition> orderByFields) throws Exception {
+ JpqlQueryCriterion queryCriterion = new JpqlParsedQueryCriterion(new CriteriaEntityFromViewToJqplQueryCriterion(criterion).queryCriterion(), classe)
+ .parsedCriterion();
+
+ List<JpqlQueryParam> params = new JpqlWhereQueryParameters(queryCriterion).parameters();
+ String query = new JqplQueryString(classe.getSimpleName(), queryCriterion).selectQuery(orderByFields);
+
+ return new JpqlQueryElement(query, params);
+
+ }
+
+ public JpqlQueryElement countQuery() throws Exception {
+ JpqlQueryCriterion queryCriterion = new JpqlParsedQueryCriterion(new CriteriaEntityFromViewToJqplQueryCriterion(criterion).queryCriterion(), classe)
+ .parsedCriterion();
+ List<JpqlQueryParam> params = new JpqlWhereQueryParameters(queryCriterion).parameters();
+
+ String query = new JqplQueryString(classe.getSimpleName(), queryCriterion).countQuery();
+ return new JpqlQueryElement(query, params);
+
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTable.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTable.java
new file mode 100644
index 0000000..e2e2a38
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTable.java
@@ -0,0 +1,282 @@
+/*
+ * 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.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import com.megatim.fdxcommons.tools.database.contrat.JsonStructureIterator;
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import com.megatim.fdxcommons.tools.database.exceptions.TypeFichierDataBadRequest;
+import com.megatim.fdxcommons.tools.database.queries.CountQuery;
+import com.megatim.fdxcommons.tools.database.queries.JsonCountQuery;
+import com.megatim.fdxcommons.tools.database.queries.JsonSelectQuery;
+import com.megatim.fdxcommons.tools.database.queries.LatestDataProductionTokenQuery;
+import com.megatim.fdxcommons.tools.database.queries.MaxDataProductionIdQuery;
+import com.megatim.fdxcommons.tools.database.queries.metadata.AliasedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxTableStructure;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonParsedQueryCriterion;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonSelectQueryResult;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.utils.JsonDataUtil;
+import com.megatim.fdxcommons.tools.utils.JsonTableUtil;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class JsonFdxTable {
+
+ protected final TableName tableName;
+ protected final String codeTypeFichier;
+ protected final String referentielVersion;
+ protected final JsonStructure jsonStructure;
+ private final List<Boolean> cachedNatureProduction = new ArrayList<>(1);
+
+ protected JsonFdxTable(String referentielVersion, String codeTypeFichier, JsonStructure jsonStructure) {
+ this.tableName = new FdxTableName(referentielVersion, codeTypeFichier);
+ this.codeTypeFichier = codeTypeFichier;
+ this.referentielVersion = referentielVersion;
+ this.jsonStructure = jsonStructure;
+ }
+
+ public JsonFdxTableStructure jsonStructure(Connection connection) {
+ return new JsonFdxTableStructure(referentielVersion, codeTypeFichier, connection);
+ }
+
+ public JsonSelectQueryResult selectAllAddedAndUpdated(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new HashMap<>();
+
+ String stringTableName = tableName.name(connection);
+ String rootTableAlias = tableAlias(tableDefinition, stringTableName);
+ tablesNameToAlias.put(stringTableName, rootTableAlias);
+
+ QueryCriterion finalCriterion = isReferentiel(connection) ? queryCriterion : addLatestDataProductionCriterion(queryCriterion, rootTableAlias, connection);
+ JsonSelectQueryResult result = new JsonDataUtil().merge(new JsonSelectQuery(tableDefinition, finalCriterion, connection, tablesNameToAlias).execute(), jsonStructure, false);
+ setToken(connection, result);
+
+ return result;
+ }
+
+ private String tableAlias(JsonTableDefinition tableDefinition, String tableName) {
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ return tablesNameToAlias.get(tableName);
+ }
+
+ public JsonSelectQueryResult selectResult(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ QueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias).aliasedQueryCriterion();
+ QueryCriterion finalCriterion = isReferentiel(connection) ? aliasedQueryCriterion : addLatestDataProductionCriterion(aliasedQueryCriterion, tablesNameToAlias.get(tableName.name(connection)), connection);
+
+ JsonSelectQueryResult result = new JsonDataUtil().merge(new JsonSelectQuery(tableDefinition, finalCriterion, connection, tablesNameToAlias).execute(), jsonStructure, false);
+ setToken(connection, result);
+
+// System.out.println("---------------------------------- final rows---------------------------- lastIndexRead = " + result.lastIndexRead());
+// for (Map<String, Object> m : result.rows()) {
+// System.out.println(m);
+// }
+ return result;
+ }
+
+ public JsonSelectQueryResult selectResult(QueryCriterion queryCriterion, Connection connection, int limit, int offset) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ QueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias).aliasedQueryCriterion();
+ QueryCriterion finalCriterion = isReferentiel(connection) ? aliasedQueryCriterion : addLatestDataProductionCriterion(aliasedQueryCriterion, tablesNameToAlias.get(tableName.name(connection)), connection);
+
+ JsonSelectQueryResult result = new JsonDataUtil().merge(new JsonSelectQuery(tableDefinition, finalCriterion, connection, tablesNameToAlias, limit, offset).execute(), jsonStructure, false);
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public JsonSelectQueryResult selectResultWithAllColumns(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ QueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias).aliasedQueryCriterion();
+ QueryCriterion finalCriterion = isReferentiel(connection) ? aliasedQueryCriterion : addLatestDataProductionCriterion(aliasedQueryCriterion, tablesNameToAlias.get(tableName.name(connection)), connection);
+
+ JsonSelectQueryResult result = new JsonDataUtil().merge(new JsonSelectQuery(tableDefinition, finalCriterion, connection, tablesNameToAlias).execute(), jsonStructure, true);
+ setToken(connection, result);
+
+ return result;
+ }
+
+ /**
+ * Ne compte que les éléments de la table racine
+ *
+ * @param queryCriterion
+ * @param connection
+ * @return
+ * @throws NamingException
+ * @throws SQLException
+ * @throws Exception
+ */
+ public Long count(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ String stringTableName = tableName.name(connection);
+ String rootTableAlias = tableAlias(tableDefinition, stringTableName);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+
+ QueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias).aliasedQueryCriterion();
+ QueryCriterion finalCriterion = isReferentiel(connection) ? aliasedQueryCriterion : addLatestDataProductionCriterion(aliasedQueryCriterion, rootTableAlias, connection);
+
+ return new JsonCountQuery(tableDefinition,
+ finalCriterion,
+ connection,
+ tablesNameToAlias
+ ).execute();
+ }
+
+ /**
+ *
+ * @param queryCriterion
+ * @param connection
+ * @return
+ * @throws SQLException
+ * @throws NamingException
+ * @throws Exception
+ */
+ public Long countOnAppColumn(QueryCriterion queryCriterion, Connection connection) throws SQLException, NamingException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ String stringTableName = tableName.name(connection);
+ String rootTableAlias = tableAlias(tableDefinition, stringTableName);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ QueryCriterion finalCriterion = isReferentiel(connection) ? queryCriterion : addLatestDataProductionCriterion(queryCriterion, rootTableAlias, connection);
+
+ return new JsonCountQuery(
+ tableDefinition,
+ finalCriterion,
+ connection,
+ tablesNameToAlias
+ ).execute();
+ }
+
+ /**
+ * Ne compte que les éléments de la table racine
+ *
+ * @param queryCriterion
+ * @param connection
+ * @return
+ * @throws NamingException
+ * @throws SQLException
+ * @throws Exception
+ */
+ public synchronized Long countRegardlessOfNatureProduction(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ List<String[]> results = new CountQuery(
+ tableName.name(connection),
+ connection,
+ parsedQueryCriterion(queryCriterion, connection).parsedCriterion(),
+ Arrays.asList()
+ ).execute();
+ return !results.isEmpty()
+ ? Long.valueOf(results.get(0)[0])
+ : 0;
+ }
+
+ public synchronized JsonSelectQueryResult selectResultRegardlessOfNatureProduction(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException, Exception {
+ JsonTableDefinition tableDefinition = tableDefinition(connection);
+ Map<String, String> tablesNameToAlias = new JsonTableUtil(tableDefinition).tablesNameToAlias();
+ QueryCriterion aliasedQueryCriterion = new AliasedQueryCriterion(tableDefinition, parsedQueryCriterion(queryCriterion, connection).parsedCriterion(), tablesNameToAlias).aliasedQueryCriterion();
+ JsonSelectQueryResult result = new JsonDataUtil().merge(new JsonSelectQuery(tableDefinition, aliasedQueryCriterion, connection, tablesNameToAlias).execute(), jsonStructure, true);
+
+ setToken(connection, result);
+
+ return result;
+ }
+
+ public JsonFdxTableColumns tableColumns() {
+ return new JsonFdxTableColumns(jsonStructure);
+ }
+
+ public JsonParsedQueryCriterion parsedQueryCriterion(QueryCriterion queryCriterion, Connection connection) throws NamingException, SQLException {
+ return new JsonParsedQueryCriterion(queryCriterion, tableColumns(), new JsonStructureIterator(tableName.name(connection), jsonStructure).columnsDefinitionWithFullQualifiedName());
+ }
+
+ public JsonTableDefinition tableDefinition(Connection connection) throws SQLException {
+ return new JsonStructureIterator(tableName.name(connection), jsonStructure).tableDefinition();
+ }
+
+ public String latestDataProductionToken(Connection connection) throws SQLException {
+ return new LatestDataProductionTokenQuery(connection, referentielVersion, codeTypeFichier).execute();
+ }
+
+ public boolean isReferentiel(Connection connection) throws NamingException, SQLException {
+
+ if (cachedNatureProduction.isEmpty()) {
+
+ String query = "SELECT natureproduction "
+ + "FROM natureproductionfichier "
+ + "WHERE typefichier_code = ? AND referentiel_version = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+
+ statement.setString(1, codeTypeFichier);
+ statement.setString(2, referentielVersion);
+
+ try ( ResultSet resultSet = statement.executeQuery()) {
+ if (resultSet.next()) {
+ cachedNatureProduction.add(resultSet.getString("natureproduction").equals("REFERENTIELLE"));
+ } else {
+ cachedNatureProduction.add(Boolean.TRUE);
+ }
+ }
+ }
+
+ }
+
+ return cachedNatureProduction.get(0);
+ }
+
+ public TableName getTableName() {
+ return tableName;
+ }
+
+ public abstract void createTable(Connection connection) throws NamingException, SQLException, Exception;
+
+ public abstract void update(LinkedHashMap<String, Object> dataToUpdate, QueryCriterion queryCriterion, CommonDataProduction dataProduction, Connection connection) throws TypeFichierDataBadRequest, SQLException, NamingException, Exception;
+
+ private QueryCriterion addLatestDataProductionCriterion(QueryCriterion queryCriterion, String rootTableAlias, Connection connection) throws SQLException {
+ Long latestDataProductionId = new MaxDataProductionIdQuery(tableName.name(connection), connection).execute();
+
+ if (latestDataProductionId > 0) {
+
+ return new QueryCriterion(null,
+ null,
+ null,
+ CriteriaLogicConnector.AND,
+ Arrays.asList(queryCriterion,
+ new QueryCriterion(rootTableAlias.isEmpty() ? "" : rootTableAlias + "." + new DataProductionIdColumnDefinition().name(),
+ latestDataProductionId,
+ Operateur.EQUALS,
+ null,
+ Arrays.asList()))
+ );
+ } else {
+ return queryCriterion;
+ }
+ }
+
+ private void setToken(Connection connection, JsonSelectQueryResult result) throws SQLException {
+ String token = latestDataProductionToken(connection);
+ result.setToken(token);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTableColumns.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTableColumns.java
new file mode 100644
index 0000000..f015567
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/JsonFdxTableColumns.java
@@ -0,0 +1,114 @@
+/*
+ * 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.fdxcommons.tools.database.tables;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.ALPHANUMERIQUE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DATE;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.DECIMAL;
+import static com.megatim.fdxcommons.model.enumeration.TypeDonnee.NUMERIQUE;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import java.sql.JDBCType;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxTableColumns {
+
+ private final JsonStructure jsonStructure;
+
+ public JsonFdxTableColumns(JsonStructure jsonStructure) {
+ this.jsonStructure = jsonStructure;
+ }
+
+ public List<FdxTableColumn> columns() {
+ List<FdxTableColumn> columns = new ArrayList<>();
+
+ for (JsonStructure j : jsonStructure.getFields()) {
+ if (j.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ columns.addAll(columns(j.getFields(), j.getName()));
+ } else {
+ columns.add(new FdxTableColumn(j.getName(), dataType(jdbcType(j.getTypeDonnee(), j.getLengthh())), 0, j.getLengthh()));
+ }
+ }
+ addAppColumns(columns);
+ return columns;
+ }
+
+ public JsonStructure getJsonStructure() {
+ return jsonStructure;
+ }
+
+ private void addAppColumns(List<FdxTableColumn> columns) {
+ //Add dataProductionId column because it is used in query
+ DataProductionIdColumnDefinition dataProdColumn = new DataProductionIdColumnDefinition();
+ columns.add(new FdxTableColumn(dataProdColumn.name(), dataType(dataProdColumn.type()), 0, 18));
+
+ //Add dataProductionId column because it is used in query
+ DataProductionUpdateIdColumnDefinition dataProdUpdateColumn = new DataProductionUpdateIdColumnDefinition();
+ columns.add(new FdxTableColumn(dataProdUpdateColumn.name(), dataType(dataProdUpdateColumn.type()), 0, 18));
+ }
+
+ private List<FdxTableColumn> columns(List<JsonStructure> fields, String initialName) {
+ List<FdxTableColumn> columns = new ArrayList<>();
+ initialName += ".";
+
+ for (JsonStructure field : fields) {
+ if (field.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ columns.addAll(columns(field.getFields(), initialName + field.getName()));
+ } else {
+ columns.add(new FdxTableColumn(initialName + field.getName(), dataType(jdbcType(field.getTypeDonnee(), field.getLengthh())), 0, field.getLengthh()));
+ }
+ }
+ return columns;
+ }
+
+ private JDBCType jdbcType(TypeDonnee typeDonnee, int lengthh) {
+ switch (typeDonnee) {
+ case NUMERIQUE:
+ return lengthh < 5 ? JDBCType.SMALLINT : JDBCType.BIGINT;
+ case DECIMAL:
+ return JDBCType.DECIMAL;
+ case DATE:
+ return JDBCType.TIMESTAMP;
+ case ALPHANUMERIQUE:
+ return JDBCType.VARCHAR;
+ }
+ return null;
+ }
+
+ private int dataType(JDBCType jdbcType) {
+ switch (jdbcType) {
+ case SMALLINT:
+ return 5;
+ case BIGINT:
+ return -5;
+ case DECIMAL:
+ return 3;
+ case TIMESTAMP:
+ return 93;
+ }
+ return 0;
+ }
+
+ private int dataType(String jdbcType) {
+ switch (jdbcType) {
+ case "SMALLINT":
+ return 5;
+ case "BIGINT":
+ return -5;
+ case "DECIMAL":
+ return 3;
+ case "TIMESTAMP":
+ return 93;
+ }
+ return 0;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/AppColumnDefinitions.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/AppColumnDefinitions.java
new file mode 100644
index 0000000..fd543de
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/AppColumnDefinitions.java
@@ -0,0 +1,42 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AppColumnDefinitions {
+
+ protected List<AppColumnDefinition> appColumnDefinitions;
+
+ public List<AppColumnDefinition> appColumns() {
+ return appColumnDefinitions;
+ }
+
+ public boolean isDateCreationColumn(String name) {
+ return new DateCreationColumnDefinition().name().equals(name);
+ }
+
+ public boolean isIndexColumn(String name) {
+ return new IndexColumnDefinition().name().equals(name);
+ }
+
+ public boolean isParentIdColumn(String name) {
+ return new ParentIdColumnDefinition().name().equals(name);
+ }
+
+ public boolean isAppColumnDefinition(String name) {
+ return appColumnDefinitions
+ .stream()
+ .filter(c -> c.name().equals(name))
+ .findAny()
+ .isPresent();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionIdColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionIdColumnDefinition.java
new file mode 100644
index 0000000..19d0e05
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionIdColumnDefinition.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DataProductionIdColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_data_production_id";
+ }
+
+ @Override
+ public String type() {
+ return "BIGINT";
+ }
+
+ @Override
+ public boolean isNull() {
+ return false;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionUpdateIdColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionUpdateIdColumnDefinition.java
new file mode 100644
index 0000000..78094b1
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DataProductionUpdateIdColumnDefinition.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataProductionUpdateIdColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_data_production_update_id";
+ }
+
+ @Override
+ public String type() {
+ return "BIGINT";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateCreationColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateCreationColumnDefinition.java
new file mode 100644
index 0000000..e3fcc01
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateCreationColumnDefinition.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DateCreationColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_date_creation";
+ }
+
+ @Override
+ public String type() {
+ return "TIMESTAMP";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateMiseAJourColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateMiseAJourColumnDefinition.java
new file mode 100644
index 0000000..fd7518a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DateMiseAJourColumnDefinition.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DateMiseAJourColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_date_mise_a_jour";
+ }
+
+ @Override
+ public String type() {
+ return "TIMESTAMP";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DeletedColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DeletedColumnDefinition.java
new file mode 100644
index 0000000..b23fccb
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/DeletedColumnDefinition.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DeletedColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_is_deleted";
+ }
+
+ @Override
+ public String type() {
+ return "SMALLINT";
+ }
+
+ @Override
+ public boolean isNull() {
+ return false;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return 0;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/EnCoursProductionColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/EnCoursProductionColumnDefinition.java
new file mode 100644
index 0000000..d510ce1
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/EnCoursProductionColumnDefinition.java
@@ -0,0 +1,40 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public class EnCoursProductionColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_en_cours_production";
+ }
+
+ @Override
+ public String type() {
+ return "boolean";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return false;
+ }
+
+ @Override
+ public boolean isPrimaryKey() {
+ return true;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxApiColumnDefinitions.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxApiColumnDefinitions.java
new file mode 100644
index 0000000..e229d60
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxApiColumnDefinitions.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxcommons.tools.database.tables.appcolumns;
+
+import java.util.Arrays;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxApiColumnDefinitions extends AppColumnDefinitions {
+
+ public FdxApiColumnDefinitions() {
+ appColumnDefinitions = Arrays.asList(
+ new IndexColumnDefinition(),
+ new DeletedColumnDefinition(),
+ new DateCreationColumnDefinition(),
+ new DateMiseAJourColumnDefinition(),
+ new DataProductionUpdateIdColumnDefinition(),
+ new DataProductionIdColumnDefinition(),
+ new TokenColumnDefinition(),
+ new ParentIdColumnDefinition()
+ );
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationColumnDefinitions.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationColumnDefinitions.java
new file mode 100644
index 0000000..fabf375
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationColumnDefinitions.java
@@ -0,0 +1,26 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import java.util.Arrays;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxConsultationColumnDefinitions extends AppColumnDefinitions {
+
+ public FdxConsultationColumnDefinitions() {
+ appColumnDefinitions = Arrays.asList(
+ new FdxConsultationIndexColumnDefinition(),
+ new DeletedColumnDefinition(),
+ new DateCreationColumnDefinition(),
+ new DataProductionIdColumnDefinition(),
+ new DateMiseAJourColumnDefinition(),
+ new DataProductionUpdateIdColumnDefinition(),
+ new ParentIdColumnDefinition()
+ );
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationIndexColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationIndexColumnDefinition.java
new file mode 100644
index 0000000..1a8400b
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/FdxConsultationIndexColumnDefinition.java
@@ -0,0 +1,27 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxConsultationIndexColumnDefinition extends IndexColumnDefinition {
+
+ @Override
+ public String type() {
+ return "BIGINT";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public boolean isPrimaryKey() {
+ return false;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/IndexColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/IndexColumnDefinition.java
new file mode 100644
index 0000000..6aa98ae
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/IndexColumnDefinition.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class IndexColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_index";
+ }
+
+ @Override
+ public String type() {
+ return "BIGSERIAL";
+ }
+
+ @Override
+ public boolean isNull() {
+ return false;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+
+ @Override
+ public boolean isPrimaryKey() {
+ return true;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/ParentIdColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/ParentIdColumnDefinition.java
new file mode 100644
index 0000000..d523627
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/ParentIdColumnDefinition.java
@@ -0,0 +1,35 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ParentIdColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_parent_id";
+ }
+
+ @Override
+ public String type() {
+ return "BIGINT";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/TokenColumnDefinition.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/TokenColumnDefinition.java
new file mode 100644
index 0000000..ba3426a
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/appcolumns/TokenColumnDefinition.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.tools.database.tables.appcolumns;
+
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+
+/**
+ *
+ * @author ASUS
+ */
+public class TokenColumnDefinition implements AppColumnDefinition {
+
+ @Override
+ public String name() {
+ return "fdx_token";
+ }
+
+ @Override
+ public String type() {
+ return "VARCHAR(50)";
+ }
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Object defaultValue() {
+ return null;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableColumnDataDto.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableColumnDataDto.java
new file mode 100644
index 0000000..6884522
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableColumnDataDto.java
@@ -0,0 +1,63 @@
+/*
+ * 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.fdxcommons.tools.database.tables.dto;
+
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxTableColumnDataDto implements Serializable {
+
+ private Object value;
+ private String name;
+ private int position;
+ private int sqlDataType;
+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
+ @JsonSubTypes({
+ @JsonSubTypes.Type(value = BigDecimal.class, name = "BigDecimal"),
+ @JsonSubTypes.Type(value = Long.class, name = "Long"),
+ @JsonSubTypes.Type(value = String.class, name = "String"),
+ @JsonSubTypes.Type(value = LocalDateTime.class, name = "LocalDateTime")}
+ )
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getPosition() {
+ return position;
+ }
+
+ public void setPosition(int position) {
+ this.position = position;
+ }
+
+ public int getSqlDataType() {
+ return sqlDataType;
+ }
+
+ public void setSqlDataType(int sqlDataType) {
+ this.sqlDataType = sqlDataType;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableRowDto.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableRowDto.java
new file mode 100644
index 0000000..7ef0336
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/FdxTableRowDto.java
@@ -0,0 +1,36 @@
+/*
+ * 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.fdxcommons.tools.database.tables.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxTableRowDto implements Serializable {
+
+ private long number;
+ private List<FdxTableColumnDataDto> dataColumns;
+
+ public long getNumber() {
+ return number;
+ }
+
+ public void setNumber(long number) {
+ this.number = number;
+ }
+
+ public List<FdxTableColumnDataDto> getDataColumns() {
+ return dataColumns;
+ }
+
+ public void setDataColumns(List<FdxTableColumnDataDto> dataColumns) {
+ this.dataColumns = dataColumns;
+ }
+
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/JpqlQueryElement.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/JpqlQueryElement.java
new file mode 100644
index 0000000..6846c91
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/database/tables/dto/JpqlQueryElement.java
@@ -0,0 +1,34 @@
+/*
+ * 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.fdxcommons.tools.database.tables.dto;
+
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryParam;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JpqlQueryElement {
+
+ private final String query;
+
+ private final List<JpqlQueryParam> parameters;
+
+ public JpqlQueryElement(String query, List<JpqlQueryParam> parameters) {
+ this.query = query;
+ this.parameters = parameters;
+ }
+
+ public String getQuery() {
+ return query;
+ }
+
+ public List<JpqlQueryParam> getParameters() {
+ return parameters;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ApplicationForbidenException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ApplicationForbidenException.java
new file mode 100644
index 0000000..24ad246
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ApplicationForbidenException.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ApplicationForbidenException extends WebApplicationException {
+
+ private final String messsage;
+
+ public ApplicationForbidenException(String messsage) {
+ super();
+ this.messsage = messsage;
+ }
+
+ @Override
+ public Response getResponse() {
+ return Response
+ .status(403)
+ .entity(messsage)
+ .type(MediaType.APPLICATION_JSON)
+ .build();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAlredyExistException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAlredyExistException.java
new file mode 100644
index 0000000..9dcedee
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAlredyExistException.java
@@ -0,0 +1,37 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.tools.exceptions;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author bissey
+ */
+public class CommonAlredyExistException extends WebApplicationException {
+
+ private final String key;
+ private final String message;
+
+ public CommonAlredyExistException(String key,String messsage) {
+ super();
+ this.key = key ;
+ this.message = messsage;
+ }
+
+ @Override
+ public Response getResponse() {
+ Map<String ,String> error = new HashMap<>() ;
+ error.put(this.key, this.message);
+ return Response.status(422).entity(error).type(MediaType.APPLICATION_JSON).build();
+ }
+
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationServerException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationServerException.java
new file mode 100644
index 0000000..bfaec07
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationServerException.java
@@ -0,0 +1,18 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public class CommonApplicationServerException extends WebApplicationException {
+
+ @Override
+ public Response getResponse() {
+ return Response.status(500).entity("Erreur serveur").type(MediaType.APPLICATION_JSON).build();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationValidationException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationValidationException.java
new file mode 100644
index 0000000..7c77335
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonApplicationValidationException.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public class CommonApplicationValidationException extends WebApplicationException {
+
+ private final String messsage;
+
+ public CommonApplicationValidationException(String messsage) {
+ super();
+ this.messsage = messsage;
+ }
+
+ @Override
+ public Response getResponse() {
+ return Response
+ .status(422)
+ .entity(messsage)
+ .type(MediaType.APPLICATION_JSON)
+ .build();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAttributNotExistException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAttributNotExistException.java
new file mode 100644
index 0000000..58417af
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonAttributNotExistException.java
@@ -0,0 +1,30 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.tools.exceptions;
+
+import javax.ejb.EJBTransactionRolledbackException;
+import javax.ejb.Singleton;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+
+/**
+ *
+ * @author bissey
+ */
+@Provider
+@Singleton
+public class CommonAttributNotExistException implements ExceptionMapper<EJBTransactionRolledbackException> {
+
+ @Override
+ public Response toResponse(EJBTransactionRolledbackException exception) {
+ return Response.status(Response.Status.BAD_REQUEST)
+ .entity(exception.getMessage()).type(MediaType.APPLICATION_JSON).build();
+// .entity("Cet Attribut N'existe pas dans cette Ressource").type(MediaType.APPLICATION_JSON).build();
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonRessourceNotFoundException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonRessourceNotFoundException.java
new file mode 100644
index 0000000..4abb373
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonRessourceNotFoundException.java
@@ -0,0 +1,45 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author bissey
+ */
+public class CommonRessourceNotFoundException extends WebApplicationException {
+
+ private String message;
+
+ private Class classx;
+
+ public CommonRessourceNotFoundException(String message) {
+ super();
+ this.message = message;
+ }
+
+ public CommonRessourceNotFoundException(Class resource) {
+ super();
+ this.classx = resource;
+ }
+
+ @Override
+ public Response getResponse() {
+ if (classx != null) {
+ Map<String, String> error = new HashMap<>();
+ error.put(this.classx.getSimpleName(), "Acune Ressource trouvée ayant cet identifiant !");
+ return Response.status(422).entity(error).type(MediaType.APPLICATION_JSON).build();
+
+ } else {
+ return Response
+ .status(Response.Status.NOT_FOUND)
+ .entity(message != null ? message : "Ressource introuvable")
+ .type(MediaType.APPLICATION_JSON)
+ .build();
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonValidationExceptionMapperCustom.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonValidationExceptionMapperCustom.java
new file mode 100644
index 0000000..d9151cb
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/CommonValidationExceptionMapperCustom.java
@@ -0,0 +1,79 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxcommons.tools.exceptions;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.validation.ConstraintViolationException;
+import javax.ejb.Singleton;
+import javax.validation.ConstraintViolation;
+import javax.validation.Path;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+
+/**
+ *
+ * @author Leonel FOFOU
+ */
+@Provider
+@Singleton
+public class CommonValidationExceptionMapperCustom extends WebApplicationException implements ExceptionMapper<ConstraintViolationException> {
+ private String key;
+ private String message;
+
+ @Override
+ public Response toResponse(ConstraintViolationException exception) {
+ return Response.status(422)
+ .entity(prepareMessage(exception))
+ .type(MediaType.APPLICATION_JSON)
+ .build();
+ }
+ @Override
+ public Response getResponse() {
+ Map<String ,String> error = new HashMap<String, String>() ;
+ error.put(this.key, this.message);
+ return Response.status(422).entity(error).type(MediaType.APPLICATION_JSON).build();
+ }
+
+ public CommonValidationExceptionMapperCustom() {
+ super();
+ }
+
+ public CommonValidationExceptionMapperCustom(String key, String messsage) {
+ super();
+ this.key = key ;
+ this.message = messsage;
+ }
+
+ private Map prepareMessage(ConstraintViolationException exception) {
+ Map<String, String> errors = new HashMap<>();
+
+ for (ConstraintViolation<?> cv : exception.getConstraintViolations()) {
+
+ String fieldName = null;
+ for(Path.Node node : cv.getPropertyPath()) {
+ fieldName = node.getName();
+ }
+
+ errors.put(fieldName, cv.getMessage());
+
+ //message.append(cv.getPropertyPath() + " " + cv.getMessage() + "\n");
+ }
+
+ return errors;
+
+ }
+
+ private Map prepareSpecificMassage(String key, String value) {
+ Map<String, String> errors = new HashMap<>();
+ errors.put(key, value);
+
+ return errors;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/FdxColumnNotFoundException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/FdxColumnNotFoundException.java
new file mode 100644
index 0000000..2e6c15d
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/FdxColumnNotFoundException.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FdxColumnNotFoundException extends Exception {
+
+ public FdxColumnNotFoundException(String message) {
+ super(message);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ImportReferentielException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ImportReferentielException.java
new file mode 100644
index 0000000..ad138ae
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/ImportReferentielException.java
@@ -0,0 +1,25 @@
+/*
+ * 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.fdxcommons.tools.exceptions;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ImportReferentielException extends Exception {
+
+ public ImportReferentielException(String message) {
+ super(message);
+ }
+
+ public ImportReferentielException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ImportReferentielException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/TypeFichierExistNotException.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/TypeFichierExistNotException.java
new file mode 100644
index 0000000..65a38b6
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/exceptions/TypeFichierExistNotException.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxcommons.tools.exceptions;
+
+/**
+ *
+ * @author lenovo
+ */
+public class TypeFichierExistNotException extends Exception {
+
+ public TypeFichierExistNotException(String message) {
+ super(message);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/FdxConsultationIntegrationData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/FdxConsultationIntegrationData.java
new file mode 100644
index 0000000..63ec1c7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/FdxConsultationIntegrationData.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxcommons.tools.integration;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.tables.dto.FdxTableRowDto;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author lenovo
+ */
+public class FdxConsultationIntegrationData implements Serializable {
+
+ private List<FdxTableRowDto> rows;
+
+ private final CommonDataProduction dataProduction;
+
+ public FdxConsultationIntegrationData(List<FdxTableRowDto> rows, CommonDataProduction dataProduction) {
+ this.rows = rows;
+ this.dataProduction = dataProduction;
+ }
+
+ public FdxConsultationIntegrationData(CommonDataProduction dataProduction, List<Map<String, Object>> jsonRows) {
+ this.dataProduction = dataProduction;
+ }
+
+ public CommonDataProduction getDataProduction() {
+ return dataProduction;
+ }
+
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/JsonFdxConsultationIntegrationData.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/JsonFdxConsultationIntegrationData.java
new file mode 100644
index 0000000..de22b65
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/JsonFdxConsultationIntegrationData.java
@@ -0,0 +1,33 @@
+/*
+ * 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.fdxcommons.tools.integration;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxConsultationIntegrationData {
+
+ private final List<Map<String, Object>> rows;
+ private final CommonDataProduction dataProduction;
+
+ public JsonFdxConsultationIntegrationData(List<Map<String, Object>> rows, CommonDataProduction dataProduction) {
+ this.rows = rows;
+ this.dataProduction = dataProduction;
+ }
+
+ public List<Map<String, Object>> getRows() {
+ return rows;
+ }
+
+ public CommonDataProduction getDataProduction() {
+ return dataProduction;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/dto/ApiIntegrationDataDto.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/dto/ApiIntegrationDataDto.java
new file mode 100644
index 0000000..ad35d70
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/integration/dto/ApiIntegrationDataDto.java
@@ -0,0 +1,71 @@
+/*
+ * 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.fdxcommons.tools.integration.dto;
+
+import java.time.LocalDateTime;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ApiIntegrationDataDto {
+
+ private List<LinkedHashMap<String, Object>> data;
+ private String codeTypeFichier;
+ private String referentielVersion;
+ private String fileName;
+ private LocalDateTime fileDate;
+
+ public ApiIntegrationDataDto(List<LinkedHashMap<String, Object>> data, String codeTypeFichier, String referentielVersion, String fileName, LocalDateTime fileDate) {
+ this.data = data;
+ this.codeTypeFichier = codeTypeFichier;
+ this.referentielVersion = referentielVersion;
+ this.fileName = fileName;
+ this.fileDate = fileDate;
+ }
+
+ public List<LinkedHashMap<String, Object>> getData() {
+ return data;
+ }
+
+ public void setData(List<LinkedHashMap<String, Object>> data) {
+ this.data = data;
+ }
+
+ public String getCodeTypeFichier() {
+ return codeTypeFichier;
+ }
+
+ public void setCodeTypeFichier(String codeTypeFichier) {
+ this.codeTypeFichier = codeTypeFichier;
+ }
+
+ public String getReferentielVersion() {
+ return referentielVersion;
+ }
+
+ public void setReferentielVersion(String referentielVersion) {
+ this.referentielVersion = referentielVersion;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public LocalDateTime getFileDate() {
+ return fileDate;
+ }
+
+ public void setFileDate(LocalDateTime fileDate) {
+ this.fileDate = fileDate;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/jaxb/util/JaxBUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/jaxb/util/JaxBUtil.java
new file mode 100644
index 0000000..b66a62c
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/jaxb/util/JaxBUtil.java
@@ -0,0 +1,40 @@
+/*
+ * 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.fdxcommons.tools.jaxb.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.Charset;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JaxBUtil {
+
+ public static <T> T convertXmlFileToObject(String fileName, Class<T> clazz) throws Exception {
+ JAXBContext context = JAXBContext.newInstance(clazz);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ InputStream inputStream = new FileInputStream(fileName);
+ Reader reader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));
+ BufferedReader buffer = new BufferedReader(reader);
+ return (T) unmarshaller.unmarshal(buffer);
+ }
+
+ public static void buildXmlFile(Class clazz, String fileName, Object valueToWrite) throws JAXBException {
+ JAXBContext jaxbContext = JAXBContext.newInstance(clazz);
+ Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
+ jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ jaxbMarshaller.marshal(valueToWrite, new File(fileName));
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/resolvers/JacksonMapperFormat.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/resolvers/JacksonMapperFormat.java
new file mode 100644
index 0000000..1ff9c30
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/resolvers/JacksonMapperFormat.java
@@ -0,0 +1,30 @@
+/*
+ * 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.fdxcommons.tools.resolvers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+//import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.apache.camel.component.jackson.JacksonDataFormat;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JacksonMapperFormat {
+
+ public static JacksonDataFormat jacksonDataFormat(Class<?> classe) {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JavaTimeModule());
+ mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ JacksonDataFormat jacksonDataFormat = new JacksonDataFormat();
+ jacksonDataFormat.setObjectMapper(mapper);
+ jacksonDataFormat.setUnmarshalType(classe);
+
+ return jacksonDataFormat;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ConnectionUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ConnectionUtil.java
new file mode 100644
index 0000000..aa45994
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ConnectionUtil.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConnectionUtil {
+
+ private ConnectionUtil() {
+ }
+
+ public static Connection getDataSourceConnection(String jndiName) {
+ Connection conn = null;
+ try {
+ Context ctx = new InitialContext();
+ DataSource ds = (DataSource) ctx.lookup(jndiName);
+ conn = ds.getConnection();
+ } catch (NamingException | SQLException ex) {
+ ex.printStackTrace();
+ }
+ return conn;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToJqplQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToJqplQueryCriterion.java
new file mode 100644
index 0000000..c2c8cbf
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToJqplQueryCriterion.java
@@ -0,0 +1,50 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryCriterion;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CriteriaEntityFromViewToJqplQueryCriterion {
+
+ private final CriteriaEntityFromView criteriaEntityFromView;
+
+ public CriteriaEntityFromViewToJqplQueryCriterion(CriteriaEntityFromView criteriaEntityFromView) {
+ this.criteriaEntityFromView = criteriaEntityFromView;
+ }
+
+ public JpqlQueryCriterion queryCriterion() {
+
+ if (criteriaEntityFromView == null) {
+ return null;
+ }
+
+ String nomColonne = criteriaEntityFromView.getNomColonne() != null ? criteriaEntityFromView.getNomColonne() : "";
+ Object criteriaValue = criteriaEntityFromView.getCriteriaValue();
+ Operateur operateur = criteriaEntityFromView.getOperateur();
+ boolean endOfTheDay = criteriaEntityFromView.isEndOfTheDay();
+ CriteriaLogicConnector criteriaLogicConnector = criteriaEntityFromView.getCriteriaLogicConnector();
+
+ List<JpqlQueryCriterion> subCriteria = new ArrayList<>();
+ if (criteriaEntityFromView.getSubCriterias() != null && !criteriaEntityFromView.getSubCriterias().isEmpty()) {
+ subCriteria = criteriaEntityFromView.getSubCriterias()
+ .stream()
+ .map(sC -> new CriteriaEntityFromViewToJqplQueryCriterion(sC).queryCriterion())
+ .collect(Collectors.toList());
+ }
+
+ return new JpqlQueryCriterion(nomColonne, criteriaValue, operateur, criteriaLogicConnector, subCriteria, endOfTheDay);
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToQueryCriterion.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToQueryCriterion.java
new file mode 100644
index 0000000..43b9bcc
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CriteriaEntityFromViewToQueryCriterion.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CriteriaEntityFromViewToQueryCriterion {
+
+ private final CriteriaEntityFromView criteriaEntityFromView;
+
+ public CriteriaEntityFromViewToQueryCriterion(CriteriaEntityFromView criteriaEntityFromView) {
+ this.criteriaEntityFromView = criteriaEntityFromView;
+ }
+
+ public QueryCriterion queryCriterion() {
+
+ if (criteriaEntityFromView == null) {
+ return null;
+ }
+
+ String nomColonne = criteriaEntityFromView.getNomColonne() != null ? criteriaEntityFromView.getNomColonne() : "";
+ Object criteriaValue = criteriaEntityFromView.getCriteriaValue();
+ Operateur operateur = criteriaEntityFromView.getOperateur();
+ CriteriaLogicConnector criteriaLogicConnector = criteriaEntityFromView.getCriteriaLogicConnector();
+
+ List<QueryCriterion> subCriteria = new ArrayList<>();
+ if (criteriaEntityFromView.getSubCriterias() != null && !criteriaEntityFromView.getSubCriterias().isEmpty()) {
+ subCriteria = criteriaEntityFromView.getSubCriterias()
+ .stream()
+ .map(sC -> new CriteriaEntityFromViewToQueryCriterion(sC).queryCriterion())
+ .collect(Collectors.toList());
+
+ return new QueryCriterion(null, null, null, criteriaLogicConnector, subCriteria);
+ } else if (nomColonne != null && !nomColonne.isEmpty() && operateur != null) {
+ return new QueryCriterion(nomColonne, criteriaValue, operateur, null, Arrays.asList());
+ }
+ return null;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CustomColumns.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CustomColumns.java
new file mode 100644
index 0000000..c69f6c5
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/CustomColumns.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CustomColumns {
+
+ public static final Set<String> columnsSet = new HashSet<>();
+ public static final Set<String> pkAutoIncrementColumnsQuerySet = new HashSet<>();
+ public static final Set<String> pkNotAutoIncrementColumnsQuerySet = new HashSet<>();
+
+ public static final String IS_DELETED_COLUMN = "fdx_is_deleted";
+
+ public static final int IS_DELETED_COLUMN_DEFAULT_VALUE = 0;
+ public static final int IS_DELETED_COLUMN_DELETED_VALUE = 1;
+ public static final String IS_DELETED_COLUMN_QUERY = IS_DELETED_COLUMN + " SMALLINT NOT NULL DEFAULT " + IS_DELETED_COLUMN_DEFAULT_VALUE + ", ";
+
+ public static final String INDEX_COLUMN = "fdx_index";
+ public static final String API_INDEX_COLUMN_QUERY = INDEX_COLUMN + " BIGSERIAL PRIMARY KEY, ";
+ public static final String FDXCONSULTATION_INDEX_COLUMN_QUERY = INDEX_COLUMN + " BIGINT PRIMARY KEY, ";
+
+ public static final String DATE_ACTION_COLUMN = "fdx_date_action";
+ public static final String DATE_ACTION_QUERY = DATE_ACTION_COLUMN + " TIMESTAMP NULL, ";
+
+ public static final String DATA_PRODUCTION_ID_COLUMN = "fdx_data_production_id";
+ public static final String DATA_PRODUCTION_ID_COLUMN_QUERY = DATA_PRODUCTION_ID_COLUMN + " BIGINT NOT NULL, ";
+
+ static {
+ columnsSet.add(IS_DELETED_COLUMN);
+ columnsSet.add(INDEX_COLUMN);
+ columnsSet.add(DATE_ACTION_COLUMN);
+ columnsSet.add(DATA_PRODUCTION_ID_COLUMN);
+
+ pkAutoIncrementColumnsQuerySet.add(IS_DELETED_COLUMN_QUERY);
+ pkAutoIncrementColumnsQuerySet.add(DATE_ACTION_QUERY);
+ pkAutoIncrementColumnsQuerySet.add(DATA_PRODUCTION_ID_COLUMN_QUERY);
+
+ pkNotAutoIncrementColumnsQuerySet.addAll(pkAutoIncrementColumnsQuerySet);
+
+ pkAutoIncrementColumnsQuerySet.add(API_INDEX_COLUMN_QUERY);
+ pkNotAutoIncrementColumnsQuerySet.add(FDXCONSULTATION_INDEX_COLUMN_QUERY);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/FdxParsedDataAction.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/FdxParsedDataAction.java
new file mode 100644
index 0000000..9557ec7
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/FdxParsedDataAction.java
@@ -0,0 +1,74 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxParsedDataRow;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ForkJoinTask;
+import java.util.concurrent.RecursiveTask;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxParsedDataAction extends RecursiveTask<List<Map<String, Object>>> {
+
+ private final List<LinkedHashMap<String, Object>> sourceData;
+ private final TableDefinition tableDefinition;
+ private final List<Map<String, Object>> cachedData = new ArrayList<>();
+ private final int THRESHOLD = 5000;
+
+ public FdxParsedDataAction(List<LinkedHashMap<String, Object>> sourceData, TableDefinition tableDefinition) {
+ this.sourceData = sourceData;
+ this.tableDefinition = tableDefinition;
+ }
+
+ @Override
+ protected List<Map<String, Object>> compute() {
+ if (sourceData.size() > THRESHOLD) {
+ ForkJoinTask
+ .invokeAll(createSubtasks())
+ .stream()
+ .map(FdxParsedDataAction::join)
+ .forEach(l -> cachedData.addAll(l));
+ return cachedData;
+ } else {
+ if (cachedData.isEmpty()) {
+ for (Map<String, Object> data : sourceData) {
+ try {
+ cachedData.add(new FdxParsedDataRow(data, tableDefinition).dataRow());
+ } catch (ColumnNotFoundException | BadDataValueException | LocalDateTimeValueParseError ex) {
+ Logger.getLogger(FdxParsedDataAction.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+ return cachedData;
+ }
+ }
+
+ private List<FdxParsedDataAction> createSubtasks() {
+ List<FdxParsedDataAction> subtasks = new ArrayList<>();
+ int size = sourceData.size() / 4;
+ int remainder = sourceData.size() % 4;
+
+ subtasks.add(new FdxParsedDataAction(sourceData.subList(0, size), tableDefinition));
+ subtasks.add(new FdxParsedDataAction(sourceData.subList(size, size * 2), tableDefinition));
+ subtasks.add(new FdxParsedDataAction(sourceData.subList(size * 2, size * 3), tableDefinition));
+ subtasks.add(new FdxParsedDataAction(sourceData.subList(size * 3, size * 4 + remainder), tableDefinition));
+
+ return subtasks;
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonDataUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonDataUtil.java
new file mode 100644
index 0000000..fa31dd5
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonDataUtil.java
@@ -0,0 +1,206 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonSelectQueryResult;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxApiColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationColumnDefinitions;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.TokenColumnDefinition;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonDataUtil {
+
+ private final String tokenColumn = new TokenColumnDefinition().name();
+ private final FdxApiColumnDefinitions apiColumnDefinitions = new FdxApiColumnDefinitions();
+ private final FdxConsultationColumnDefinitions fdxConsColumnDefinitions = new FdxConsultationColumnDefinitions();
+
+ public JsonSelectQueryResult merge(Map<Long, Object> data, JsonStructure jsonStructure, boolean withCustomColumns) {
+ List<Map<String, Object>> finalData = mergeAll(data, jsonStructure, withCustomColumns);
+ return new JsonSelectQueryResult(lastIndexRead(data), mergeSimpleColumns(finalData, jsonStructure, withCustomColumns));
+ }
+
+ public Map<String, Set<Long>> tableToMatchingIndexes(Map<Long, Object> data, String rootTableName) {
+ Map<String, Set<Long>> tableToMatchingIndexes = new HashMap<>();
+
+ data.forEach((k, v) -> {
+ Set<Long> indexes = tableToMatchingIndexes.get(rootTableName);
+ if (indexes == null) {
+ indexes = new HashSet<>();
+ }
+ indexes.add(k);
+ tableToMatchingIndexes.put(rootTableName, indexes);
+ tableToMatchingIndexes(v, rootTableName, tableToMatchingIndexes);
+ });
+ return tableToMatchingIndexes;
+ }
+
+ private List<Map<String, Object>> mergeAll(Map<Long, Object> data, JsonStructure jsonStructure, boolean withCustomColumns) {
+ List<Map<String, Object>> finalData = new ArrayList<>();
+ for (Object value : data.values()) {
+ Map map = (Map) value;
+ finalData.add(mergeData(map, jsonStructure, withCustomColumns));
+ }
+ return finalData;
+ }
+
+ private List<Map<String, Object>> mergeSimpleColumns(List<Map<String, Object>> data, JsonStructure jsonStructure, boolean withCustomColumns) {
+ List<Map<String, Object>> finalData = new ArrayList<>();
+
+ for (Map<String, Object> datum : data) {
+ finalData.add(mergeSimpleColumns(datum, jsonStructure, withCustomColumns));
+ }
+ return finalData;
+ }
+
+ private Map<String, Object> mergeSimpleColumns(Map<String, Object> dataMap, JsonStructure jsonStructure, boolean withCustomColumns) {
+ Map<String, Object> finalData = new HashMap<>();
+ List<JsonStructure> fields = jsonStructure.getFields();
+
+ for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
+ Optional<JsonStructure> optField = fields.stream().filter(p -> p.getName().equalsIgnoreCase(entry.getKey())).findFirst();
+
+ if (optField.isPresent()) {
+ JsonStructure field = optField.get();
+
+ if (field.isCollection()) {
+ List<Map<String, Object>> liste = (List) entry.getValue();
+ List<Object> finalValues = new ArrayList<>();
+
+ if (field.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ for (Map<String, Object> map : liste) {
+ finalValues.add(mergeSimpleColumns(map, field, withCustomColumns));
+ }
+ } else {
+ for (Map<String, Object> map : liste) {
+ for (Map.Entry<String, Object> e : map.entrySet()) {
+ finalValues.add(e.getValue());
+ }
+ }
+ }
+ finalData.put(entry.getKey(), finalValues);
+ } else if (field.getTypeDonnee().equals(TypeDonnee.OBJET)) {
+ Map<String, Object> map = null;
+ if (entry.getValue() != null) {
+ if (entry.getValue() instanceof List) {
+ map = (Map<String, Object>) ((List) entry.getValue()).get(0);
+ } else {
+ map = (Map<String, Object>) entry.getValue();
+ }
+ finalData.put(entry.getKey(), mergeSimpleColumns(map, field, withCustomColumns));
+ }
+ } else {
+ switch (field.getTypeDonnee()) {
+ case DATE:
+ Timestamp timestamp = Timestamp.valueOf(entry.getValue().toString());
+ LocalDateTime date = timestamp.toLocalDateTime();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(field.getFormatDate());
+ finalData.put(entry.getKey(), formatter.format(date));
+ break;
+
+ default:
+ finalData.put(entry.getKey(), entry.getValue());
+ break;
+ }
+ }
+ } else {
+ if (!entry.getKey().equalsIgnoreCase(tokenColumn) && withCustomColumns && (apiColumnDefinitions.isAppColumnDefinition(entry.getKey()) || fdxConsColumnDefinitions.isAppColumnDefinition(entry.getKey()))) {
+ finalData.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ return finalData;
+ }
+
+ private void tableToMatchingIndexes(Object data, String tableName, Map<String, Set<Long>> tableToMatchingIndexes) {
+ if (data instanceof Map) {
+ Map<Object, Object> dataMap = (Map) data;
+
+ for (Map.Entry<Object, Object> entry : dataMap.entrySet()) {
+ if (entry.getKey() instanceof Long) {
+ Long index = (Long) entry.getKey();
+ Set<Long> indexes = tableToMatchingIndexes.get(tableName);
+
+ if (indexes == null) {
+ indexes = new HashSet<>();
+ }
+ if (!indexes.contains(index)) {
+ indexes.add(index);
+ }
+ tableToMatchingIndexes.put(tableName, indexes);
+ tableToMatchingIndexes(entry.getValue(), tableName, tableToMatchingIndexes);
+
+ } else if (entry.getValue() instanceof Map) {
+ String newTableName = tableName + "_" + tableName(entry.getKey().toString());
+ tableToMatchingIndexes(entry.getValue(), newTableName, tableToMatchingIndexes);
+
+ }
+ }
+ }
+ }
+
+ private String tableName(String key) {
+ String[] array = key.split("\\.");
+ return (array[array.length - 1]).toLowerCase();
+ }
+
+ private Map<String, Object> mergeData(Map<Object, Object> dataMap, JsonStructure jsonStructure, boolean withCustomColumns) {
+ Map<String, Object> finalMap = new HashMap<>();
+
+ for (Map.Entry<Object, Object> entry : dataMap.entrySet()) {
+
+ if (entry.getKey() instanceof Long) {
+ finalMap = mergeData((Map) entry.getValue(), jsonStructure, withCustomColumns);
+ } else {
+ String key = cleanKey(entry.getKey().toString());
+
+ if (entry.getValue() instanceof Map) {
+ Map<Long, Object> map = (Map) entry.getValue();
+ finalMap.put(key, mergeAll(map, jsonStructure, withCustomColumns));
+ } else {
+ if (!key.equalsIgnoreCase(tokenColumn)) {
+ if (withCustomColumns) {
+ finalMap.put(key, entry.getValue());
+ } else {
+ if (!apiColumnDefinitions.isAppColumnDefinition(key) && !fdxConsColumnDefinitions.isAppColumnDefinition(key)) {
+ finalMap.put(key, entry.getValue());
+ }
+ }
+ }
+ }
+ }
+ }
+ return finalMap;
+ }
+
+ private String cleanKey(String key) {
+ String[] array = key.split("\\.");
+ return array[array.length - 1];
+ }
+
+ private int lastIndexRead(Map<Long, Object> data) {
+ Long max = 0L;
+ for (Long l : data.keySet()) {
+ if (l > max) {
+ max = l;
+ }
+ }
+ return Integer.parseInt(max + "");
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonFdxParsedDataAction.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonFdxParsedDataAction.java
new file mode 100644
index 0000000..f92aa49
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonFdxParsedDataAction.java
@@ -0,0 +1,73 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.ColumnNotFoundException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.metadata.JsonFdxParsedDataRow;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ForkJoinTask;
+import java.util.concurrent.RecursiveTask;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonFdxParsedDataAction extends RecursiveTask<List<Map<String, Object>>> {
+
+ private final List<LinkedHashMap<String, Object>> sourceData;
+ private final JsonStructure jsonStructure;
+ private final List<Map<String, Object>> cachedData = new ArrayList<>();
+ private final int THRESHOLD = 5000;
+
+ public JsonFdxParsedDataAction(List<LinkedHashMap<String, Object>> sourceData, JsonStructure jsonStructure) {
+ this.sourceData = sourceData;
+ this.jsonStructure = jsonStructure;
+ }
+
+ @Override
+ protected List<Map<String, Object>> compute() {
+ if (sourceData.size() > THRESHOLD) {
+ ForkJoinTask
+ .invokeAll(createSubtasks())
+ .stream()
+ .map(JsonFdxParsedDataAction::join)
+ .forEach(l -> cachedData.addAll(l));
+ return cachedData;
+ } else {
+ if (cachedData.isEmpty()) {
+ for (Map<String, Object> data : sourceData) {
+ try {
+ cachedData.add(new JsonFdxParsedDataRow(data, jsonStructure).dataRow());
+ } catch (ColumnNotFoundException | BadDataValueException | LocalDateTimeValueParseError ex) {
+ Logger.getLogger(JsonFdxParsedDataAction.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+ return cachedData;
+ }
+ }
+
+ private List<JsonFdxParsedDataAction> createSubtasks() {
+ List<JsonFdxParsedDataAction> subtasks = new ArrayList<>();
+ int size = sourceData.size() / 4;
+ int remainder = sourceData.size() % 4;
+
+ subtasks.add(new JsonFdxParsedDataAction(sourceData.subList(0, size), jsonStructure));
+ subtasks.add(new JsonFdxParsedDataAction(sourceData.subList(size, size * 2), jsonStructure));
+ subtasks.add(new JsonFdxParsedDataAction(sourceData.subList(size * 2, size * 3), jsonStructure));
+ subtasks.add(new JsonFdxParsedDataAction(sourceData.subList(size * 3, size * 4 + remainder), jsonStructure));
+
+ return subtasks;
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonTableUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonTableUtil.java
new file mode 100644
index 0000000..cb959e9
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/JsonTableUtil.java
@@ -0,0 +1,112 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.json.JsonStructure;
+import com.megatim.fdxcommons.model.pojo.JsonTableDefinition;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JsonTableUtil {
+
+ private final JsonTableDefinition tableDefinition;
+
+ public JsonTableUtil(JsonTableDefinition tableDefinition) {
+ this.tableDefinition = tableDefinition;
+ }
+
+ public List<String> tablesName() {
+ List<String> tablesName = new ArrayList<>();
+ tablesName(tableDefinition, tablesName);
+
+ return tablesName;
+ }
+
+ /**
+ * La map est formé du nom complet de chaque colonne (clé) et son
+ * alias(valeur)
+ *
+ * @return
+ */
+ public Map<String, String> columnsNameToAlias() {
+ Map<String, String> columnsNameToAlias = new HashMap<>();
+ columnsNameToAlias(tableDefinition, columnsNameToAlias);
+
+ return columnsNameToAlias;
+ }
+
+ public Map<String, String> tablesNameToAlias() {
+ Map<String, String> tablesNameToAlias = new HashMap<>();
+ int i = 0;
+ tablesNameToAlias(tableDefinition, tablesNameToAlias, i);
+
+ return tablesNameToAlias;
+ }
+
+ public Map<String, List<String>> tableToChildrenTables() {
+ Map<String, List<String>> tableToDirectChildren = new HashMap<>();
+ tableToDirectChildren(tableDefinition, tableToDirectChildren);
+
+ return tableToDirectChildren;
+ }
+
+ private void columnsNameToAlias(JsonTableDefinition tableDef, Map<String, String> columnsNameToAlias) {
+ for (ColumnDefinition c : tableDef.getColumnDefs()) {
+ columnsNameToAlias.put(tableDef.getTableName() + "." + c.getName(), tableDef.getTableName() + "_" + c.getName());
+ }
+
+ for (JsonTableDefinition t : tableDef.getTablesDefinition()) {
+ columnsNameToAlias(t, columnsNameToAlias);
+ }
+ }
+
+ private int tablesNameToAlias(JsonTableDefinition tableDef, Map<String, String> tablesNameToAlias, int i) {
+ tablesNameToAlias.put(tableDef.getTableName(), "t" + i);
+ i++;
+
+ for (JsonTableDefinition t : tableDef.getTablesDefinition()) {
+ i = tablesNameToAlias(t, tablesNameToAlias, i);
+ }
+ return i;
+ }
+
+ /**
+ * Liste de toutes les tables provenant de la définition du tableDfinition
+ * racine
+ *
+ * @param tableDefinition
+ * @param tablesName
+ */
+ private void tablesName(JsonTableDefinition tableDefinition, List<String> tablesName) {
+ tablesName.add(tableDefinition.getTableName());
+
+ for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) {
+ tablesName(t, tablesName);
+ }
+ }
+
+ private void tableToDirectChildren(JsonTableDefinition tableDefinition, Map<String, List<String>> tableToDirectChildren) {
+ List<String> children = new ArrayList<>();
+
+ for (JsonTableDefinition t : tableDefinition.getTablesDefinition()) {
+ children.add(t.getTableName());
+
+ if (t.getTablesDefinition().isEmpty()) {
+ tableToDirectChildren.put(t.getTableName(), Arrays.asList());
+ } else {
+ tableToDirectChildren(t, tableToDirectChildren);
+ }
+ }
+ tableToDirectChildren.put(tableDefinition.getTableName(), children);
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ParserUtils.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ParserUtils.java
new file mode 100644
index 0000000..befb586
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/ParserUtils.java
@@ -0,0 +1,420 @@
+/*
+ * 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.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.pojo.Constantes;
+import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.poi.ss.usermodel.CellValue;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.FormulaEvaluator;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.NumberToTextConverter;
+import org.dhatim.fastexcel.reader.Cell;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ParserUtils {
+ //Nombre be balise <entity> dans le validateur XML
+
+ private static final int ENTITY_LIST_SIZE = 2;
+
+ private ParserUtils() {
+
+ }
+
+ public static Map<Integer, Map> getValidateurElements(File file) throws Exception {
+ byte[] bytes = Files.readAllBytes(file.toPath());
+ return getValidateurElements(bytes);
+ }
+
+ public static Map<Integer, Map> getValidateurElements(byte[] bytes) throws Exception {
+ Document doc = intialize(bytes);
+ NodeList entityList = doc.getElementsByTagName("entity"); //Liste des noeud <entity>
+
+ //Map qui stocke le champ à une position, ainsi que les caractéristiques de champ(typeDonnee, taille, index de debut d'extraction)
+ Map<Integer, Map> mapParams = new HashMap<>();
+
+ int position = 0;
+
+ if (entityList.getLength() == ENTITY_LIST_SIZE) {
+
+ //Liste des noeud de type <validation> du deuximème Noeud <entity>
+ NodeList entityFileLineChildren = entityList.item(1).getChildNodes();
+
+ //parcours de la balise <entity> pour récupérer ses enfants
+ for (int i = 0; i < entityFileLineChildren.getLength(); i++) {
+
+ if (entityFileLineChildren.item(i) != null && entityFileLineChildren.item(i).getAttributes() != null) {
+
+ //balise <validation>
+ Node validation = entityFileLineChildren.item(i);
+
+ if (validation != null) {
+
+ position++;
+
+ //Liste des assertions de la balise <validation>
+ NodeList assertions = validation.getChildNodes();
+
+ for (int r = 0; r < assertions.getLength(); r++) {
+ Node assertion = assertions.item(r);
+ Map<String, String> mapAttributes = new HashMap<>();
+
+ if (assertion != null && assertion.getAttributes() != null) {
+
+ //Les attributs de la balise <assertion>
+ NamedNodeMap attributesAssertion = assertion.getAttributes();
+
+ for (int k = 0; k < attributesAssertion.getLength(); k++) {
+
+ String nodeValue = attributesAssertion.item(k).getNodeValue();
+ String nodeName = attributesAssertion.item(k).getNodeName();
+
+ if (nodeName.equals("error-code")) {
+ mapAttributes.put(nodeName, nodeValue);
+ break;
+ }
+ }
+
+ //Liste des balises <param-value> de la balise <assertion>
+ NodeList params = assertion.getChildNodes();
+ Integer positionValue = null;
+
+ for (int j = 0; j < params.getLength(); j++) {
+
+ if (params.item(j) != null && params.item(j).getAttributes() != null) {
+
+ //Les attributs de la balise <param-value>
+ NamedNodeMap attributesParamValue = params.item(j).getAttributes();
+
+ for (int k = 0; k < attributesParamValue.getLength(); k++) {
+
+ String nodeValue = attributesParamValue.item(k).getNodeValue();
+ String nextNodeValue = attributesParamValue.item(++k).getNodeValue();
+ mapAttributes.put(nodeValue, nextNodeValue);
+
+ if (nodeValue.equals(Constantes.POSITION)) {
+ positionValue = Integer.valueOf(nextNodeValue);
+ }
+ }
+ mapParams.put(positionValue != null ? positionValue : position, mapAttributes);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return mapParams;
+
+ }
+
+ public static String getXlxsCellValue(org.apache.poi.ss.usermodel.Cell cell, Workbook wb, String typeDonnee, String formatDate) {
+ if (cell != null) {
+ String formatString = cell.getCellStyle().getDataFormatString();
+
+ switch (cell.getCellTypeEnum()) {
+ case STRING:
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ Date date = DateUtil.getJavaDate(Double.parseDouble(cell.getStringCellValue()));
+ return formatDate(date, formatDate);
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+ DataFormatter formatter = new DataFormatter();
+ String formattedValue = formatter.formatCellValue(cell);
+ return formattedValue.replace(",", "");
+ }
+ return cell.getStringCellValue();
+ case NUMERIC:
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
+ return formatDate(date, formatDate);
+
+ } else if (DateUtil.isCellDateFormatted(cell)) {
+ return convertToDate(cell, formatDate);
+
+ } else if (formatString != null && formatString.contains("%")) {
+ return String.valueOf(cell.getNumericCellValue());
+
+ } else {
+ return NumberToTextConverter.toText(cell.getNumericCellValue());
+ }
+ case BOOLEAN:
+ return String.valueOf(cell.getBooleanCellValue());
+ case BLANK:
+ return "";
+ case FORMULA:
+ FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
+ CellValue cellValue = evaluator.evaluate(cell);
+ return cellValue.formatAsString();
+ default:
+ return "";
+ }
+ }
+ return "";
+ }
+
+ private static String convertToDate(org.apache.poi.ss.usermodel.Cell cell, String formatDate) {
+ Date date = cell.getDateCellValue();
+ return formatDate(date, formatDate);
+ }
+
+ private static String formatDate(Date date, String formatDate) {
+ SimpleDateFormat sdf
+ = new SimpleDateFormat(formatDate != null && !formatDate.isEmpty()
+ ? formatDate
+ : "dd/MM/yyyy");
+ return sdf.format(date);
+ }
+
+ /**
+ * Méthode permettant de convertir la données contenu dans une cellule excel
+ * en chaîne de caractères
+ *
+ * @param cell
+ * @return
+ */
+ public static String getCellValueAsString(Cell cell) {
+ String val = "";
+
+ if (cell != null) {
+ switch (cell.getType()) {
+
+ case EMPTY:
+ break;
+
+ case STRING:
+
+ if (!cell.getText().equals("null")) {
+
+ val = cell.getText().replaceAll("\\p{Cntrl}", "");
+
+ }
+
+ break;
+
+ case NUMBER:
+
+ val = cell.asNumber().toPlainString();
+
+ if (val.equals("null")) {
+
+ }
+
+ break;
+
+ case BOOLEAN:
+
+ val = String.valueOf(cell.asBoolean());
+
+ if (val.equals("null")) {
+
+ }
+
+ break;
+
+ default:
+ break;
+
+ }
+
+ }
+
+ return val;
+
+ }
+
+ /**
+ * Méthode qui retire le caractère retour charriot dans une chaîne
+ *
+ * @param str
+ * @return
+ */
+// public static String removeReturnCharriot(String str) {
+// String result = str;
+//
+// if (str != null && !str.isEmpty()) {
+// String[] tab = str.split("\n");
+// result = "";
+//
+// for (String s : tab) {
+// result += s;
+// }
+// }
+// return result;
+// }
+ /**
+ * Méthode utilitaire pour extraire les données dans un fichier xml
+ *
+ * @param array
+ * @return
+ * @throws Exception
+ */
+ private static Document intialize(byte[] array) throws Exception {
+
+ /**
+ * Défini un factory qui aide à obtenir un parseur qui produit un arbre
+ * d'objets DOM à partir d'un docuent XML.
+ */
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+ /**
+ * création d'un objet du builder pour parser le fichier XML.
+ */
+ DocumentBuilder db = dbf.newDocumentBuilder();
+
+ Document doc = db.parse(new ByteArrayInputStream(array));
+
+ doc.getDocumentElement().normalize();
+
+ return doc;
+ }
+
+ private static Document intialize(File file) throws Exception {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(file);
+ doc.getDocumentElement().normalize();
+
+ return doc;
+ }
+
+ /**
+ * Méthode pour obtenir l'objet de typr char correspondant à chaque
+ * délimiteur
+ *
+ * @param delimiteur
+ * @return
+ */
+ public static char characterOfDelimiteur(String delimiteur) {
+ char character;
+
+ switch (delimiteur) {
+ case "\\t":
+ character = '\t';
+ break;
+ case "\\n":
+ character = '\n';
+ break;
+ case "":
+ character = '\0';
+ break;
+ default:
+ character = delimiteur.charAt(0);
+ }
+
+ return character;
+ }
+
+ /**
+ * Méthode permettant d'encoder une chaîne de caractères
+ *
+ * @param datas : tableau de String à encoder
+ * @param charset : encodage à utiliser
+ * @return
+ */
+ public static String[] encodeStrings(String[] datas, Charset charset) {
+ String[] encodedStrings = new String[datas.length];
+
+ for (int i = 0; i < encodedStrings.length; i++) {
+ byte[] bytesOfString = datas[i].getBytes();
+ encodedStrings[i] = new String(bytesOfString, charset);
+
+ }
+ return encodedStrings;
+ }
+
+ /**
+ * Méthode qui extrait une sous-chaîne dans une chaîne de caractères en
+ * utilisant un délimiteur
+ *
+ * @param line : chaîne mère à séparer
+ * @param character : délimiteur de chaîne
+ * @return : retourne un tableau contenant les châines extraites
+ */
+ public static String[] splitIntoColumns(String line, char character) {
+
+ int count = 0;
+
+ for (int i = 0; i < line.length(); i++) {
+
+ if (line.charAt(i) == character) {
+ count++;
+ }
+
+ }
+
+ String[] columns = new String[count + 1];
+
+ StringBuilder builder = new StringBuilder(0);
+
+ count = 0;
+
+ for (int i = 0; i < line.length(); i++) {
+
+ if (line.charAt(i) == character) {
+
+ columns[count] = builder.toString();
+
+ builder = new StringBuilder(0);
+
+ count++;
+
+ } else {
+
+ builder.append(line.charAt(i));
+ }
+
+ }
+
+ columns[count] = builder.toString();
+
+ return columns;
+ }
+
+ /**
+ * Méthode qui écrit dans un fichier
+ *
+ * @param finalColumnsTableLine : liste des châines à écrire dans le fichier
+ * @param bufferWriter : ressource permettant d'écrire dans le fichier
+ */
+ public static void writeToFile(String[] finalColumnsTableLine, final BufferedWriter bufferWriter) throws IOException {
+
+ //Ecriture dans le fichier output
+ StringBuilder safeLineBuilder = new StringBuilder(0);
+
+ for (String s : finalColumnsTableLine) {
+ safeLineBuilder.append(s);
+ }
+
+ String safeLine = safeLineBuilder.toString();
+
+ if (safeLine.length() > 0) {
+ bufferWriter.write(safeLine + System.lineSeparator());
+
+ }
+ }
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java
new file mode 100644
index 0000000..2e745f6
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SearchColumnUtil.java
@@ -0,0 +1,88 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.search.SearchColumn;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import org.apache.poi.ss.formula.functions.T;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class SearchColumnUtil {
+
+ private SearchColumnUtil() {
+ }
+
+ public static List<SearchColumn> getSearchColumns(Class<T> classe) {
+ List<SearchColumn> searchColumns = new ArrayList<>();
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+
+ for (Field f : fields) {
+ CriteriaEntitySearch searchAnn = f.getAnnotation(CriteriaEntitySearch.class);
+ if (searchAnn != null) {
+ SearchColumn searchColumn = new SearchColumn();
+ searchColumn.setLibelle(searchAnn.libelle());
+
+ TypeDonnee typeDonnee = getTypeDonnee(f, searchAnn);
+
+ if (typeDonnee != null) {
+ searchColumn.setTypeDonnee(typeDonnee);
+ searchColumns.add(searchColumn);
+ }
+
+ }
+ }
+ return searchColumns;
+ }
+
+ public static TypeDonnee getTypeDonnee(Field field, CriteriaEntitySearch searchAnn) {
+ Class<?> fieldClass = field.getType();
+ TypeDonnee typeDonnee = null;
+
+ if (fieldClass.isPrimitive()) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+
+ } else if (fieldClass.isEnum()) {
+ Enumerated enumerated = field.getAnnotation(Enumerated.class);
+ typeDonnee = enumerated == null || enumerated.value().equals(EnumType.ORDINAL) ? TypeDonnee.NUMERIQUE : TypeDonnee.ALPHANUMERIQUE;
+
+ } else if (!fieldClass.isInterface() && !Collection.class.isAssignableFrom(fieldClass) && !Map.class.isAssignableFrom(fieldClass)) {
+ String[] fieldPath = searchAnn.fieldName().split("\\.");
+ if (fieldPath.length < 2) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+ } else {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(getFieldType(fieldClass, Arrays.copyOfRange(fieldPath, 1, fieldPath.length)));
+ }
+ }
+
+ return typeDonnee;
+ }
+
+ public static Class<?> getFieldType(Class<?> classe, String[] fieldPath) {
+ String fieldName = fieldPath[0];
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+ Optional<Field> optField = fields.stream().filter(f -> f.getName().equals(fieldName)).findFirst();
+
+ if (optField.isPresent()) {
+ Field field = optField.get();
+ if (fieldPath.length == 1) {
+ return field.getType();
+ } else {
+ return getFieldType(field.getType(), Arrays.copyOfRange(fieldPath, 1, fieldPath.length));
+ }
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SqlUtilities.java b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SqlUtilities.java
new file mode 100644
index 0000000..f2f84d2
--- /dev/null
+++ b/fdx-commons/fdxcommons-tools/src/main/java/com/megatim/fdxcommons/tools/utils/SqlUtilities.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxcommons.tools.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.time.temporal.Temporal;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SqlUtilities {
+
+ public static TypeDonnee typeDonneeFromJavaClass(Class<?> classe) {
+ if (classe == null) {
+ return null;
+ }
+ if (Number.class.isAssignableFrom(classe)) {
+ return TypeDonnee.NUMERIQUE;
+ } else if (String.class.isAssignableFrom(classe)) {
+ return TypeDonnee.ALPHANUMERIQUE;
+ } else if (java.util.Date.class.isAssignableFrom(classe) || Temporal.class.isAssignableFrom(classe)) {
+ return TypeDonnee.DATE;
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-commons/nb-configuration.xml b/fdx-commons/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-commons/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-commons/pom.xml b/fdx-commons/pom.xml
new file mode 100644
index 0000000..1112685
--- /dev/null
+++ b/fdx-commons/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>com.megatim.fdxcommons</groupId>
+ <artifactId>fdxcommons</artifactId>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>fdxcommons-tools</module>
+ <module>fdxcommons-model</module>
+ <module>fdxcommons-dao-ifaces</module>
+ <module>fdxcommons-dao-impl</module>
+ <module>fdxcommons-core-ifaces</module>
+ <module>fdxcommons-core-impl</module>
+ <module>fdxcommons-service-ifaces</module>
+ <!--<module>fdxcommons-service-impl</module>-->
+ </modules>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <version>1.0</version>
+ </properties>
+
+</project>
diff --git a/fdx-consultation/README.md b/fdx-consultation/README.md
new file mode 100644
index 0000000..33958c0
--- /dev/null
+++ b/fdx-consultation/README.md
@@ -0,0 +1,43 @@
+
+# Back-end Projet MGT.FS
+
+## Tools :
+ 1. OS: Windows 10 ;
+ 2. IDE: NetBeans 12.0 ;
+ 3. Language: Java 8.0 ;
+ 4. Maven 3.1 ;
+ 5. WildFly 17 ;
+ 6. Git 2.41 ;
+ 7. EJB 3.0
+ 8. L'API JPA 2.1
+ 9. provider: Hibernate
+ 10. Transaction-type: JTA
+ 11. Data-Source
+ 12. Postgres SQL 14.3
+ 13. PostMan
+ 14. PowerAMC
+ 15. Bitbucket
+
+## prérequis :
+ 1. Installation du Serveur d'application WildFly ;
+ 2. Installation du SGBD ;
+ 3. Installation du JDK ;
+ 4. Installation de Maven ;
+
+
+
+## Lancement:
+ 1. Creation d'une Base de donnée sur postgres si vous utilisé postgres ;
+ 2. Creation d'une Datasource nomé fileDS dans WildFly ;
+ 3. Build du module parent ;
+ 4. deploiment du War (source_file_service-impl-1.0-SNAPSHOT.war) dans WildFly ;
+
+
+
+## Lien de Test de L'API (Collection Du Projet)
+
+
+
+## Team Dev
+ Victor E...
+ Leonel F...
diff --git a/fdx-consultation/fdxconsulation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java b/fdx-consultation/fdxconsulation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java
new file mode 100644
index 0000000..7cc7927
--- /dev/null
+++ b/fdx-consultation/fdxconsulation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java
@@ -0,0 +1,76 @@
+/*
+ * 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.service.impl.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dtos.referentiel.RoutageDto;
+import com.megatim.fdxconsultation.model.referentiel.Routage;
+import com.megatim.fdxconsultation.model.referentiel.RoutageId;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.RoutageRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+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 = "referentiel", path = "routages", description = "Routages")
+@Path("routage")
+@Dependent
+public class RoutageRSImpl implements RoutageRS {
+
+ @Inject
+ private RoutageManager manager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ public RoutageRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, Routage searchEntity) {
+
+ List<RoutageDto> dtos = manager.getWithPagination(pageNumber, pagesize, searchEntity, utilisateurConnecte);
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, Routage searchEntity) {
+
+ List<RoutageDto> dtos = manager.getAll(searchEntity, utilisateurConnecte);
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, Routage searchEntity) {
+ return manager.size(searchEntity);
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ //Routage entity = manager.getById(id, utilisateurConnecte);
+ //return Response.ok(manager.mapToDto(entity)).build();
+ return Response.ok().build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/.gitignore b/fdx-consultation/fdxconsultation-core-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/nb-configuration.xml b/fdx-consultation/fdxconsultation-core-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/pom.xml b/fdx-consultation/fdxconsultation-core-ifaces/pom.xml
new file mode 100644
index 0000000..afbd7c1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/pom.xml
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.core.ifaces</groupId>
+ <artifactId>fdxconsultation-core-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.dao.ifaces</groupId>
+ <artifactId>fdxconsultation-dao-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdx.messaging</groupId>
+ <artifactId>fdx-messaging-common</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.reporting</groupId>
+ <artifactId>fdxconsultation-reporting</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericDAOLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericManagerLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>reporting-adhoc</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <name>fdxconsultation-core-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java
new file mode 100644
index 0000000..c03c6a7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/AbstractCrudManager.java
@@ -0,0 +1,90 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.AbstractCrudDAO;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ * @param <T> : Entite reelle
+ * @param <K> : Dto
+ * @param <ID> : Classe de l'identifiant
+ * @param <S> : entité de recherche
+ */
+public interface AbstractCrudManager<T extends Object, K, ID, S> {
+
+ <R extends AbstractCrudDAO<T, ID, S>> R getDao();
+
+ K mapToDto(T entity);
+
+ default T add(T entity, User connectedUser) {
+ beforeAdd(entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) entity;
+ baseEntity.setDateCreation(new Date());
+ baseEntity.setTypeOperation(TypeOperation.AJOUTER);
+ baseEntity.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+ return getDao().save(entity);
+ }
+
+ default T update(ID id, T entity, User connectedUser) {
+ T refreshEntity = getDao().getById(id);
+ beforeUpdate(refreshEntity, entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) refreshEntity;
+ baseEntity.setDateDerniereModification(new Date());
+ baseEntity.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+ return getDao().save(refreshEntity);
+ }
+
+ default void delete(ID id, User connectedUser) {
+ T entity = getDao().getById(id);
+ beforeDelete(entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) entity;
+ baseEntity.setDateSuppression(new Date());
+ baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+ baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+ getDao().save(entity);
+ } else {
+ getDao().delete(entity);
+ }
+ }
+
+ default void beforeAdd(T entity, User conncectedUser) {
+ }
+
+ default void beforeDelete(T entity, User conncectedUser) {
+ }
+
+ void beforeUpdate(T refreshEntity, T entity, User conncectedUser);
+
+ public default T getById(ID id) {
+ return getDao().getById(id);
+ }
+
+ public default List<K> findWithPagination(int pageNumber, int pagesize, S searchEntity, User connectedUser) {
+ return getDao().findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapToDto(t))
+ .collect(Collectors.toList());
+ }
+
+ public default List<K> getAll(S searchEntity, User connectedUser) {
+ return getDao().getAll(searchEntity)
+ .stream()
+ .map(t -> mapToDto(t))
+ .collect(Collectors.toList());
+ }
+
+ public default Long count(S searchEntity) {
+ return getDao().count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/CommonReadManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/CommonReadManager.java
new file mode 100644
index 0000000..9697c5f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/CommonReadManager.java
@@ -0,0 +1,133 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.dao.ifaces.utils.SearchCriteriaBuilderUtil;
+import com.megatim.fdxcommons.model.search.SearchCriteria;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CommonReadManager<T, U> {
+
+ public Class<T> getManagedEntityClass();
+
+ public EntityManager getEntityManager();
+
+ public default List<T> getAll(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return getEntityManager().createQuery(cq).getResultList();
+ }
+
+ /**
+ * Méthode qui les prédicats à partir des critères de recherche
+ *
+ * @param searchCriterias
+ * @param cb
+ * @param root
+ * @return
+ */
+ public default List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+ List<Predicate> predicates = new ArrayList<>();
+
+ searchCriterias.parallelStream().forEach(s -> {
+
+ if (s.getFieldValue() != null) {
+ Predicate predicate = null;
+ switch (s.getOperateur()) {
+ case EQUALS:
+ predicate = cb.equal(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case NOT_EQUALS:
+ predicate = cb.notEqual(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case LIKE:
+ if (s.getFieldValue() instanceof String) {
+ predicate = cb.like(s.getFrom().get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.gt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.lt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.le(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThanOrEqualTo(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ case IN:
+ if (s.getFieldValue() instanceof java.util.Collection) {
+ predicate = s.getFrom().get(s.getFieldName()).in(s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ default:
+
+ }
+ }
+ });
+
+ return predicates;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ExportExcelGenerator.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ExportExcelGenerator.java
new file mode 100644
index 0000000..4c8ba3d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ExportExcelGenerator.java
@@ -0,0 +1,66 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ExportExcelGenerator<T> {
+
+ private final List<T> entities = new ArrayList<T>();
+
+ public File exporter(T entity) {
+ entities.clear();
+ entities.add(entity);
+ return generate();
+ }
+
+ public File exporter(List<T> entities) {
+ this.entities.clear();
+ this.entities.addAll(entities);
+ return generate();
+ }
+
+ private File generate() {
+ File fichier;
+
+ try {
+
+ //On exporte
+ fichier = CommonTools.exporterEnExcel(entities, new File(generateFileName()));
+
+ } catch (Exception ex) {
+
+ //On affiche les traces
+ ex.printStackTrace();
+
+ //On lève une exception
+ throw new CommonApplicationValidationException("Une erreur est survenue lors de la génération du fichier excel");
+
+ }
+ return fichier;
+ }
+
+ private String generateFileName() {
+
+ //Variables
+ File repertoire = new File(AppCommonContext.EXPORT_DIR);
+
+ //Si le repertoire n'exsite pas
+ if(!repertoire.exists()){
+
+ //On le créée
+ repertoire.mkdirs();
+
+ }
+
+ return repertoire.getAbsolutePath() + File.separator + CommonTools.genererChaineAleatoire() + "." + AppCommonContext.EXTENSION_EXCEL;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GeneriConsultingManagerIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GeneriConsultingManagerIFaces.java
new file mode 100644
index 0000000..bb37122
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GeneriConsultingManagerIFaces.java
@@ -0,0 +1,89 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.common.annotations.OrderType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GeneriConsultingManagerIFaces<T, K, S, ID extends Serializable, U> extends GenericManager<T, ID> {
+
+ K mapToDto(T entity);
+
+ S mapToDetailDto(T entity);
+
+ public abstract String getEntityIdName();
+
+ public S getById(ID id);
+
+ public default List<K> convertListToDto(List<T> datas) {
+ List<K> dtos = new ArrayList<>();
+
+ if (datas != null) {
+ for (T data : datas) {
+ dtos.add(mapToDto(data));
+ }
+ }
+ return dtos;
+ }
+
+ public default List<K> getWithPagination(Integer pageNumber, Integer pagesize, U searchEntity, User connectedUser) {
+
+ Map<String, OrderType> orders = new HashMap<>();
+
+ //On trie par id
+ orders.put(getEntityIdName(), OrderType.DESC);
+ //On construit la requete
+ RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
+
+ //Construction de l'index
+ int index = (pageNumber - 1) * pagesize;
+
+ //On on recherche l'entité
+ List<T> datas = filter(requeteur.getPredicats(), orders, null, index, pagesize);
+ List<K> dtos = convertListToDto(datas);
+
+ return dtos;
+ }
+
+ public default List<K> getAll(U searchEntity, User connectedUser) {
+
+ //On construit la requete
+ RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
+ Map<String, OrderType> orders = new HashMap<>();
+
+ //On trie par id
+ orders.put(getEntityIdName(), OrderType.DESC);
+
+ //On on recherche l'entité
+ List<T> datas = filter(requeteur.getPredicats(), orders, null, 0, -1);
+ List<K> dtos = convertListToDto(datas);
+
+ return dtos;
+
+ }
+
+ public default Long size(U searchEntity) {
+ //On construit la requete
+ RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
+
+ //On on recherche l'entité
+ return count(requeteur.getPredicats());
+ }
+
+ public abstract RestrictionsContainer construireRequete(U searchEntity, TypeOperation typeOperation);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericCrudManagerIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericCrudManagerIFaces.java
new file mode 100644
index 0000000..dd8da48
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericCrudManagerIFaces.java
@@ -0,0 +1,58 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import java.io.Serializable;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GenericCrudManagerIFaces<T, K, S, ID extends Serializable, U> extends GeneriConsultingManagerIFaces<T, K, S, ID, U> {
+
+ public default T add(T entity, User connectedUser) {
+
+ //Pre-traitements
+ beforeAdd(entity, connectedUser);
+
+ //On save
+ T newEntity = save(entity);
+
+ return newEntity;
+ }
+
+ @Override
+ public default S getById(ID id) {
+
+ T entity = find(getEntityIdName(), id);
+
+ return mapToDetailDto(entity);
+ }
+
+ public default T modify(ID id, T entity, User connectedUser) {
+
+ T actualEntity = find(getEntityIdName(), id);
+
+ //On copie les nouvelles valeurs
+ beforeModify(actualEntity, entity, connectedUser);
+
+ update(id, actualEntity);
+
+ return actualEntity;
+ }
+
+ public default T remove(ID id, User connectedUser) {
+
+ T entity = find(getEntityIdName(), id);
+
+ beforeRemove(entity, connectedUser);
+
+ return update(id, entity);
+ }
+
+ public abstract void beforeAdd(T entity, User connectedUser);
+
+ public abstract void beforeRemove(T entity, User connectedUser);
+
+ public abstract void beforeModify(T actualEntity, T requestEntity, User connectedUser);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericReportingManagerIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericReportingManagerIFaces.java
new file mode 100644
index 0000000..128d703
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/GenericReportingManagerIFaces.java
@@ -0,0 +1,254 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.Column;
+import com.megatim.reporting.adhoc.dto.HeaderData;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.pojo.DescriptionEtat;
+import com.megatim.reporting.adhoc.pojo.DescriptionSousEtat;
+import com.megatim.reporting.adhoc.pojo.ElementToDisplay;
+import com.megatim.reporting.adhoc.pojo.enums.ElementType;
+import com.megatim.reporting.adhoc.pojo.enums.Position;
+import com.megatim.reporting.adhoc.process.Processor;
+import com.megatim.reporting.adhoc.util.PdfUtil;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GenericReportingManagerIFaces<T, U, ID> {// T : entité de reporting, U : entité de recherche, ID : Type de l'id
+
+ public default File getTemplateFileForList() {
+ return Paths.get(AppCommonContext.TEMPLATE_DIR, AppCommonContext.TEMPLATE_LISTE).toFile();
+ }
+
+ public default File getTemplateFileForDetail() {
+ return Paths.get(AppCommonContext.TEMPLATE_DIR, AppCommonContext.TEMPLATE_DETAIL).toFile();
+ }
+
+ public default String getJasperFolder() {
+ return AppCommonContext.JASPER_DIR;
+ }
+
+ public default String exportFilesRepository() {
+ return AppCommonContext.EXPORT_DIR;
+ }
+
+ String getEntityIdName();
+
+ default String getReportName() {
+ return getClazz().getSimpleName() + new Date().getTime();
+ }
+
+ default String getSubReportName(String fieldName) {
+ return getClazz().getSimpleName() + "SousEtat" + (fieldName.charAt(0) + "").toUpperCase() + fieldName.substring(1) + new Date().getTime();
+ }
+
+ Class<T> getClazz();
+
+ List<T> getDatas(U searchEntity) throws Exception;
+
+ Map<String, Object> getParameters();
+
+ File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception;
+
+ File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception;
+
+ File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception;
+
+ File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception;
+
+ default String getVersion() {
+ return "Fdx-Consultation v1.0";
+ }
+
+ default String getLogo() {
+ return Paths.get(AppCommonContext.IMAGES_DIR, AppCommonContext.LOGO).toString();
+ }
+
+ default File generatePdf(ReportConfiguration<U> reportConfiguration, User userConnected, boolean isDetail) throws Exception {
+ File repertoire = Paths.get(exportFilesRepository()).toFile();
+
+ if (repertoire == null || !repertoire.exists()) {
+ repertoire = new File(exportFilesRepository());
+ repertoire.mkdirs();
+ }
+ if (reportConfiguration != null) {
+ DescriptionEtat descriptionEtat = getDescriptionEtat(reportConfiguration, userConnected, isDetail);
+ List<T> datas = getDatas(reportConfiguration.getSearchEntity());
+ descriptionEtat.getElementsToDisplay().addAll(getSystemElementsToDisplay(userConnected, datas, isDetail));
+
+ Map<String, Object> parameters = getParameters();
+ parameters.put("TITRE", reportConfiguration.getTitle());
+
+ if (userConnected != null) {
+ parameters.put("LOGIN_UTILISATEUR", userConnected.getUserName());
+ }
+ parameters.put("VERSION", getVersion());
+ parameters.put("LOGO_CENTRE", getLogo());
+ parameters.put("SUBREPORT_DIR", AppCommonContext.JASPER_DIR + File.separator);
+
+ String jasperFilePath = new Processor().process(descriptionEtat);
+ return PdfUtil.generatePdfFile(isDetail && datas.size() > 1 ? Arrays.asList(datas.get(0)) : datas,
+ Paths.get(exportFilesRepository(), descriptionEtat.getReportName() + ".pdf").toString(),
+ jasperFilePath, parameters);
+ } else {
+ return Files.createFile(Paths.get(Paths.get(exportFilesRepository(), getReportName() + ".pdf").toString())).toFile();
+ }
+
+ }
+
+ default File exportExcel(ReportConfiguration<U> reportConfiguration, User userConnected, boolean isDetail) throws Exception {
+ File repertoire = Paths.get(exportFilesRepository()).toFile();
+ ExportExcelGenerator<T> exportExcelGenerator = new ExportExcelGenerator();
+ if (repertoire == null || !repertoire.exists()) {
+ repertoire = new File(exportFilesRepository());
+ repertoire.mkdirs();
+ }
+ if (reportConfiguration != null) {
+ List<T> datas = getDatas(reportConfiguration.getSearchEntity());
+ return exportExcelGenerator.exporter(datas);
+ } else {
+ return Files.createFile(Paths.get(Paths.get(exportFilesRepository(), getReportName() + AppCommonContext.EXTENSION_EXCEL).toString())).toFile();
+ }
+ }
+
+ default DescriptionEtat getDescriptionEtat(ReportConfiguration reportConfiguration, User userConnected, boolean isDetail) {
+
+ DescriptionEtat descriptionEtat = new DescriptionEtat();
+ List<CustomField> printableFields = getCustomFields(reportConfiguration.getColumns());
+
+ descriptionEtat.setDetail(isDetail);
+ descriptionEtat.getElementsToDisplay().addAll(getElementsToDisplay(reportConfiguration.getHeaderDatas()));
+ descriptionEtat.getFieldsToDisplay().addAll(printableFields);
+ descriptionEtat.setReportName(getReportName());
+ descriptionEtat.setRepositoryFolder(getJasperFolder());
+
+ if (descriptionEtat.isDetail()) {
+ descriptionEtat.setTemplateFile(getTemplateFileForDetail());
+ descriptionEtat.setHaveLineNumber(false);
+ } else {
+ descriptionEtat.setTemplateFile(getTemplateFileForList());
+ }
+ descriptionEtat
+ .getSubReportDescriptions()
+ .addAll(getSousDescriptionSousEtats(printableFields
+ .stream()
+ .filter(p -> p.getClasse().isAssignableFrom(java.util.List.class) || p.getClasse().isAssignableFrom(java.util.Set.class))
+ .collect(Collectors.toList())));
+
+ return descriptionEtat;
+ }
+
+ default List<DescriptionSousEtat> getSousDescriptionSousEtats(List<CustomField> printableListFields) {
+ List<DescriptionSousEtat> descSousEtatListe = new ArrayList<>();
+ printableListFields.stream().forEach(c -> {
+ DescriptionSousEtat descSousEtat = new DescriptionSousEtat();
+
+ descSousEtat.setDataField(c);
+ descSousEtat.setReportTitle(c.getLibelle());
+ descSousEtat.setRangSousEtat(c.getRang());
+ descSousEtat.setSubReportName(getSubReportName(c.getName()));
+ descSousEtat.getFieldsToDisplay().addAll(PrintableColumnExtractor.extractListFields(getClazz(), c));
+
+ descSousEtatListe.add(descSousEtat);
+ });
+
+ return descSousEtatListe;
+ }
+
+ default List<ElementToDisplay> getElementsToDisplay(List<HeaderData> headerDatas) {
+ List<ElementToDisplay> eltsToDisplay = new ArrayList<>();
+ headerDatas.stream().forEach(h -> {
+ ElementToDisplay elt = new ElementToDisplay(h.getLibelle(), h.getValue());
+ try {
+ elt.setPosition(Position.of(h.getPosition()));
+ } catch (Exception ex) {
+
+ }
+ eltsToDisplay.add(elt);
+ });
+ return eltsToDisplay;
+ }
+
+ default List<ElementToDisplay> getSystemElementsToDisplay(User userConnected, List<T> datas, boolean isDetail) {
+ List<ElementToDisplay> eltsToDisplay = new ArrayList<>();
+
+ ElementToDisplay elt = new ElementToDisplay("Edité le", "");
+ elt.setElementType(ElementType.DATE_GENERE);
+ elt.setPosition(Position.RIGHT);
+ eltsToDisplay.add(elt);
+
+ if (!isDetail) {
+ elt = new ElementToDisplay("Nombre Total", datas.size() + "");
+ eltsToDisplay.add(elt);
+ }
+
+ elt = new ElementToDisplay("Edité par", userConnected != null ? userConnected.getUserName() : "");
+ elt.setPosition(Position.RIGHT);
+ eltsToDisplay.add(elt);
+
+ return eltsToDisplay;
+ }
+
+ default List<CustomField> getCustomFields(List<Column> columns) {
+ List<CustomField> customFields = new ArrayList<>();
+ List<CustomField> printableFields = PrintableColumnExtractor.extract(getClazz());
+
+ columns.stream().forEach(c -> {
+ printableFields.stream().filter(p -> p.getLibelle().equals(c.getLibelle())).findFirst().ifPresent(p -> {
+ p.setRang(c.getRang());
+ customFields.add(p);
+ });
+
+ });
+ return customFields;
+ }
+
+ public default CriteriaFormRequest getExportOneCriterion(ID id) {
+ CriteriaFormRequest formRequest = new CriteriaFormRequest();
+ CriteriaEntityFromView fromView = new CriteriaEntityFromView();
+ fromView.setCriteriaValue(id);
+ fromView.setNomColonne(getEntityIdName());
+ fromView.setOperateur(Operateur.EQUALS);
+ formRequest.setCriteria(fromView);
+ return formRequest;
+ }
+
+ public default ReportConfiguration<CriteriaEntityFromView> finalReportConfiguration(ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ ReportConfiguration<CriteriaEntityFromView> finalConfig = null;
+
+ if (reportConfiguration != null) {
+ finalConfig = new ReportConfiguration();
+ finalConfig.setSearchEntity(reportConfiguration.getSearchEntity() != null ? reportConfiguration.getSearchEntity().getCriteria() : null);
+ finalConfig.setTitle(reportConfiguration.getTitle());
+ finalConfig.getColumns().addAll(reportConfiguration.getColumns());
+ finalConfig.getHeaderDatas().addAll(reportConfiguration.getHeaderDatas());
+ }
+ return finalConfig;
+ }
+
+ public default Response downloadFile(File file) {
+ Response.ResponseBuilder response = Response.ok((Object) file);
+ response.header("Content-Disposition", "attachment;filename=" + file.getName());
+ return response.build();
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java
new file mode 100644
index 0000000..08d972c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/ManagerWithCriteriaEntityIFaces.java
@@ -0,0 +1,112 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ * @param <T> : Entite reelle
+ * @param <ID> : Classe de l'identifiant
+ * @param <U> : entité qui représente un utilisateur
+ */
+public interface ManagerWithCriteriaEntityIFaces<T extends Object, ID, U> {
+
+ <R extends CustomDAOWithCriteriaEntityIfaces<T, ID>> R getDao();
+
+ default T save(T entity) {
+ return getDao().save(entity);
+ }
+
+ default T add(T entity, User connectedUser) {
+ beforeAdd(entity, connectedUser);
+
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) entity;
+ baseEntity.setDateCreation(new Date());
+ baseEntity.setTypeOperation(TypeOperation.AJOUTER);
+ baseEntity.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+ logAfterSave(entity, connectedUser);
+ return getDao().save(entity);
+ }
+
+ default void delete(ID id, User connectedUser) {
+ T entity = getDao().getById(id);
+ beforeDelete(entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) entity;
+ baseEntity.setDateSuppression(new Date());
+ baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+ baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+ getDao().save(entity);
+ } else {
+ getDao().delete(entity);
+ }
+ logAfterDelete(entity, connectedUser);
+ }
+
+ default void delete(User connectedUser, T entity) {
+ beforeDelete(entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) entity;
+ baseEntity.setDateSuppression(new Date());
+ baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+ baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+ getDao().delete(entity);
+ } else {
+ getDao().delete(entity);
+ }
+ logAfterDelete(entity, connectedUser);
+ }
+
+ public default T getById(ID id) {
+ return getDao().getById(id);
+ }
+
+ default T update(ID id, T entity, User connectedUser) {
+ T refreshEntity = getDao().getById(id);
+ beforeUpdate(refreshEntity, entity, connectedUser);
+ if (entity instanceof BaseEntity) {
+ BaseEntity baseEntity = (BaseEntity) refreshEntity;
+ baseEntity.setDateDerniereModification(new Date());
+ baseEntity.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+ logAfterUpdate(entity, connectedUser);
+ return getDao().save(refreshEntity);
+ }
+
+ public default List<T> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+ return getDao().findWithPagination(criterion, fetchEagerFields, orderByFields, pageNumber, pageSize);
+ }
+
+ public default List<T> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+ return (List<T>) getDao().findAll(criterion, fetchEagerFields, orderByFields);
+ }
+
+ public default Long count(CriteriaEntityFromView criterion) throws Exception {
+ return getDao().count(criterion);
+ }
+
+ default void beforeAdd(T entity, User connectedUser) {
+ }
+
+ default void beforeDelete(T entity, User connectedUser) {
+ }
+
+ default void beforeUpdate(T refreshEntity, T entity, User connectedUser) {
+ }
+
+ public default void logAfterSave(T entity, User connectedUser){}
+
+ public default void logAfterUpdate(T entity, User connectedUser){}
+
+ public default void logAfterDelete(T entity, User connectedUser){}
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithCriteriaEntity.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithCriteriaEntity.java
new file mode 100644
index 0000000..1f32dcf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithCriteriaEntity.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaginationWithCriteriaEntity<T, ID> {
+
+ PaginationWithCriteriaEntityDAO<T, ID> paginationWithCriteriaEntityDAO();
+
+ public default List<T> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+ return paginationWithCriteriaEntityDAO().findWithPagination(criterion, fetchEagerFields, orderByFields, pageNumber, pageSize);
+ }
+
+ public default List<T> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+ return paginationWithCriteriaEntityDAO().findAll(criterion, fetchEagerFields, orderByFields);
+ }
+
+ public default Long count(CriteriaEntityFromView criterion) throws Exception {
+ return paginationWithCriteriaEntityDAO().count(criterion);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithSearchEntity.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithSearchEntity.java
new file mode 100644
index 0000000..fb151d0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/PaginationWithSearchEntity.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface PaginationWithSearchEntity<T extends Object, ID, S> {
+
+ PaginationWithSearchEnityDAO<T, ID, S> getPaginationDao();
+
+ default List<T> all() {
+ return getPaginationDao().all()
+ .stream()
+ .collect(Collectors.toList());
+ }
+
+ default List<T> findAll(S searchEntity) {
+ return getPaginationDao().findAllBySearchEntity(searchEntity)
+ .stream()
+ .collect(Collectors.toList());
+ }
+
+ default List<T> findWithPagination(int pageNumber, int pagesize, S searchEntity) {
+ return getPaginationDao().findAllBySearchEntity(pageNumber, pagesize, searchEntity)
+ .stream()
+ .collect(Collectors.toList());
+ }
+
+ default Long count(S searchEntity) {
+ return getPaginationDao().countBySearchEntity(searchEntity);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/TypeFichierReportingManagerIFaces.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/TypeFichierReportingManagerIFaces.java
new file mode 100644
index 0000000..2512f5c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/abtracts/TypeFichierReportingManagerIFaces.java
@@ -0,0 +1,160 @@
+package com.megatim.fdxconsultation.core.ifaces.abtracts;
+
+import com.megatim.fdxcommons.core.impl.tools.CommonUtilities;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfiguration;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.Column;
+import com.megatim.reporting.adhoc.dto.HeaderData;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.pojo.DescriptionEtat;
+import com.megatim.reporting.adhoc.pojo.ElementToDisplay;
+import com.megatim.reporting.adhoc.pojo.enums.ElementType;
+import com.megatim.reporting.adhoc.pojo.enums.Position;
+import com.megatim.reporting.adhoc.process.Processor;
+import com.megatim.reporting.adhoc.util.PdfUtil;
+import java.io.File;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TypeFichierReportingManagerIFaces {
+
+ public default File getTemplateFileForList() {
+ return Paths.get(AppCommonContext.TEMPLATE_DIR, AppCommonContext.TEMPLATE_LISTE).toFile();
+ }
+
+ List<ColumnDefinition> getColumnDefinition(String codeTypeFichier) throws Exception;
+
+ public default File getTemplateFileForDetail() {
+ return Paths.get(AppCommonContext.TEMPLATE_DIR, AppCommonContext.TEMPLATE_DETAIL).toFile();
+ }
+
+ public default String getJasperFolder() {
+ return AppCommonContext.JASPER_DIR;
+ }
+
+ public default String pdfFilesRepository() {
+ return AppCommonContext.PDF_DIR;
+ }
+
+ List<Object> getDatas(CriteriaEntityFromView criterion, String codeTypeFichier, boolean isDetail);
+
+ Map<String, Object> getParameters();
+
+ default String getVersion() {
+ return "Fdx-Consultation v1.0";
+ }
+
+ default String getLogo() {
+ return Paths.get(AppCommonContext.IMAGES_DIR, AppCommonContext.LOGO).toString();
+ }
+
+ default File generatePdf(CustomTypeFichierReportConfiguration reportConfiguration, String codeTypeFichier, User userConnected, boolean isDetail) throws Exception {
+ DescriptionEtat descriptionEtat = getDescriptionEtat(reportConfiguration, codeTypeFichier, userConnected, isDetail);
+ List<Object> datas = getDatas(reportConfiguration.getCriterionFromView(), codeTypeFichier, isDetail);
+
+ descriptionEtat.getElementsToDisplay().addAll(getSystemElementsToDisplay(userConnected, datas, isDetail));
+
+ Map<String, Object> parameters = getParameters();
+ parameters.put("TITRE", reportConfiguration.getTitle());
+
+ if (userConnected != null) {
+ parameters.put("LOGIN_UTILISATEUR", userConnected.getUserName());
+ }
+ parameters.put("VERSION", getVersion());
+ parameters.put("LOGO_CENTRE", getLogo());
+ parameters.put("SUBREPORT_DIR", AppCommonContext.JASPER_DIR);
+
+ String jasperFilePath = new Processor().process(descriptionEtat);
+
+ return PdfUtil.generatePdfFile(isDetail && datas.size() > 1 ? Arrays.asList(datas.get(0)) : datas,
+ Paths.get(pdfFilesRepository(), descriptionEtat.getReportName() + ".pdf").toString(),
+ jasperFilePath, parameters);
+ }
+
+ default DescriptionEtat getDescriptionEtat(CustomTypeFichierReportConfiguration reportConfiguration, String codeTypeFichier, User userConnected, boolean isDetail) throws Exception {
+
+ DescriptionEtat descriptionEtat = new DescriptionEtat();
+ descriptionEtat.setDetail(isDetail);
+ descriptionEtat.getElementsToDisplay().addAll(getElementsToDisplay(reportConfiguration.getHeaderDatas()));
+ descriptionEtat.getFieldsToDisplay().addAll(getCustomFields(codeTypeFichier, reportConfiguration.getColumns()));
+ descriptionEtat.setReportName(codeTypeFichier + new Date().getTime());
+ descriptionEtat.setRepositoryFolder(getJasperFolder());
+
+ if (descriptionEtat.isDetail()) {
+ descriptionEtat.setTemplateFile(getTemplateFileForDetail());
+ descriptionEtat.setHaveLineNumber(false);
+ } else {
+ descriptionEtat.setTemplateFile(getTemplateFileForList());
+ }
+
+ return descriptionEtat;
+ }
+
+ default List<ElementToDisplay> getElementsToDisplay(List<HeaderData> headerDatas) {
+ List<ElementToDisplay> eltsToDisplay = new ArrayList<>();
+ headerDatas.stream().forEach(h -> {
+ ElementToDisplay elt = new ElementToDisplay(h.getLibelle(), h.getValue());
+ try {
+ elt.setPosition(Position.of(h.getPosition()));
+ } catch (Exception ex) {
+
+ }
+ eltsToDisplay.add(elt);
+ });
+ return eltsToDisplay;
+ }
+
+ default List<ElementToDisplay> getSystemElementsToDisplay(User userConnected, List<Object> datas, boolean isDetail) {
+ List<ElementToDisplay> eltsToDisplay = new ArrayList<>();
+
+ ElementToDisplay elt = new ElementToDisplay("Edité le", "");
+ elt.setElementType(ElementType.DATE_GENERE);
+ elt.setPosition(Position.RIGHT);
+ eltsToDisplay.add(elt);
+
+ if (!isDetail) {
+ elt = new ElementToDisplay("Nombre Total", datas.size() + "");
+ eltsToDisplay.add(elt);
+ }
+
+ elt = new ElementToDisplay("Edité par", userConnected != null ? userConnected.getUserName() : "");
+ elt.setPosition(Position.RIGHT);
+ eltsToDisplay.add(elt);
+
+ return eltsToDisplay;
+ }
+
+ default List<CustomField> getCustomFields(String codeTypeFichier, List<Column> columns) throws Exception {
+ columns.stream().forEach(c -> c.getLibelle());
+ List<ColumnDefinition> columnDefinitions = getColumnDefinition(codeTypeFichier);
+
+ List<CustomField> customFields = new ArrayList<>();
+
+ columns.stream().forEach(c -> {
+ Optional<ColumnDefinition> optionalColumn = columnDefinitions.stream().filter(p -> p.getName().equalsIgnoreCase(c.getLibelle())).findFirst();
+
+ if (optionalColumn.isPresent()) {
+ CustomField customField = new CustomField(c.getLibelle().toUpperCase(), c.getLibelle().toLowerCase());
+ customField.setRang(c.getRang());
+ TypeDonnee typeDonnee = TypeDonnee.fromValeur(optionalColumn.get().getTypeDonnee());
+ customField.setClasse(CommonUtilities.fullQualifiedNameTypeFromTypeDonnee(typeDonnee));
+
+ customFields.add(customField);
+ }
+ });
+ return customFields;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/ActionManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/ActionManager.java
new file mode 100644
index 0000000..0e86a7c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/ActionManager.java
@@ -0,0 +1,20 @@
+package com.megatim.fdxconsultation.core.ifaces.administration;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.model.administration.Action;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface ActionManager extends GenericManager<Action, Long> {
+
+ /**
+ * Nom du service
+ *
+ */
+ public final static String SERVICE_NAME = "ActionManager";
+
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/HistoriqueMotDePasseManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/HistoriqueMotDePasseManager.java
new file mode 100644
index 0000000..f7da2d7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/HistoriqueMotDePasseManager.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxconsultation.core.ifaces.administration;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.model.administration.HistoriqueMotDePasse;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface HistoriqueMotDePasseManager extends GenericManager<HistoriqueMotDePasse, Long> {
+
+ /**
+ * Nom du service
+ *
+ */
+ public final static String SERVICE_NAME = "HistoriqueMotDePasseManager";
+
+ /**
+ * Permet d'ajouter un nouveau mot de passe
+ * @param motDePasse
+ * @param user
+ * @return
+ */
+ public void ajouter(String motDePasse, User user);
+
+ /**
+ * Permet de determiner si le mot de passe existe
+ * @param motDePasse
+ * @param user
+ * @return
+ */
+ public boolean siMotDePasseExiste(String motDePasse, User user);
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalActionUtilisateurManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalActionUtilisateurManager.java
new file mode 100644
index 0000000..b77a801
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalActionUtilisateurManager.java
@@ -0,0 +1,30 @@
+/*
+ * 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.ifaces.administration;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GeneriConsultingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalActionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.dto.JournalActionUtilisateurDto;
+import com.megatim.fdxconsultation.model.searchentities.JournalActionUtilisateurSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JournalActionUtilisateurManager extends GeneriConsultingManagerIFaces<JournalActionUtilisateur, JournalActionUtilisateurDto, JournalActionUtilisateurDto, Long, JournalActionUtilisateurSearch>, PaginationWithCriteriaEntity<JournalActionUtilisateur, Long>,
+ GenericReportingManagerIFaces<JournalActionUtilisateurReporting, CriteriaEntityFromView, Long> {
+
+ /**
+ * Permet de recuperer un journalConnexionUtilisateur via son id
+ * @param id
+ * @return
+ */
+ JournalActionUtilisateur findById(Long id);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalConnexionUtilisateurManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalConnexionUtilisateurManager.java
new file mode 100644
index 0000000..72da0d5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/JournalConnexionUtilisateurManager.java
@@ -0,0 +1,30 @@
+/*
+ * 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.ifaces.administration;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GeneriConsultingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalConnexionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.dto.JournalConnexionUtilisateurDto;
+import com.megatim.fdxconsultation.model.searchentities.JournalConnexionUtilisateurSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JournalConnexionUtilisateurManager extends GeneriConsultingManagerIFaces<JournalConnexionUtilisateur, JournalConnexionUtilisateurDto, JournalConnexionUtilisateurDto, Long, JournalConnexionUtilisateurSearch>, PaginationWithCriteriaEntity<JournalConnexionUtilisateur, Long>,
+ GenericReportingManagerIFaces<JournalConnexionUtilisateurReporting, CriteriaEntityFromView, Long> {
+
+ /**
+ * Permet de recuperer un journalConnexionUtilisateur via son id
+ * @param id
+ * @return
+ */
+ JournalConnexionUtilisateur findById(Long id);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/RoleManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/RoleManager.java
new file mode 100644
index 0000000..fe2a658
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/RoleManager.java
@@ -0,0 +1,62 @@
+package com.megatim.fdxconsultation.core.ifaces.administration;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.reporting.model.administration.RoleReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.searchentities.RoleSearch;
+import java.util.List;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface RoleManager extends GenericCrudManagerIFaces<Role, RoleDto, RoleDto, Long, RoleSearch>,
+ PaginationWithCriteriaEntity<Role, Long>,
+ PaginationWithSearchEntity<Role, Long, RoleSearch>,
+ GenericReportingManagerIFaces<RoleReporting, CriteriaEntityFromView, Long> {
+
+ /**
+ * Methode permet de valider un rôle
+ * @param libelle
+ * @param connectedUser
+ */
+ void validate(String libelle, User connectedUser);
+
+ /**
+ * Methode permet de rejeter un rôle
+ * @param libelle
+ * @param role
+ * @param connectedUser
+ */
+ void reject(String libelle, Role role, User connectedUser);
+
+ /**
+ * Methode permettant de vérifier si un rôle possède des utilisateurs liés à lui
+ * @param role
+ * @return
+ */
+ public boolean siPossedeUtilisateurs(Role role);
+
+ /**
+ * Methode permettant de determiner le nombre d'utilisateur d'un groupe
+ * @param entity
+ * @return
+ */
+ public Integer obtenirNbreUtilisateurRole(Role entity);
+
+ /**
+ * Methode permettant de formater une liste de roles en y ajoutant des informations supplémentaires
+ * @param liste
+ * @return
+ */
+ public List<Role> formaterDonnees(List<Role> liste);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/UserManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/UserManager.java
new file mode 100644
index 0000000..fdac544
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/administration/UserManager.java
@@ -0,0 +1,71 @@
+package com.megatim.fdxconsultation.core.ifaces.administration;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.administration.UserReporting;
+import com.megatim.fdxconsultation.model.dto.EditPasswordDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.dto.UserSlimDto;
+import com.megatim.fdxconsultation.model.searchentities.UserSearch;
+import java.util.List;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface UserManager extends GenericCrudManagerIFaces<User, UserSlimDto, UserDto, Long, UserSearch>,
+ PaginationWithCriteriaEntity<User, Long>,
+ GenericReportingManagerIFaces<UserReporting, CriteriaEntityFromView, Long> {
+
+ /**
+ * Permet de recuperer un utilisateur via ces informations de connexion
+ *
+ * @param username
+ * @param motDePasse
+ * @return
+ */
+ User recuperUtilisateur(String username, String motDePasse);
+
+ /**
+ * Permet de recuperer un utilisateur via son id
+ * @param id
+ * @return
+ */
+ User findById(Long id);
+
+ /**
+ * Permet de recuperer un utilisateur via ces informations de connexion
+ *
+ * @param username
+ * @return
+ */
+ User recuperUtilisateur(String username);
+
+ void editPassword(String username, EditPasswordDto editPasswordDto);
+
+ void validate(String username, User connectedUser);
+
+ void reject(String username, User user, User connectedUser);
+
+ /**
+ * Permet de valider les paramètre de connexion
+ * @param username
+ * @param password
+ * @return
+ */
+ public List<String> validerParametresConnexion(String username, String password);
+
+ /**
+ * Methode Permettant de recuperer tous les utilateurs liés à un même rôle
+ * @param role
+ * @return
+ */
+ public List<User> obtenirListeUtilisateursRole(Role role);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/api/token/ApiTokenManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/api/token/ApiTokenManager.java
new file mode 100644
index 0000000..17b35bb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/api/token/ApiTokenManager.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.core.ifaces.api.token;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.reporting.model.api.token.ApiTokenReporting;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.megatim.fdxconsultation.model.searchentities.ApiTokenSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApiTokenManager extends GenericCrudManagerIFaces<ApiToken, ApiTokenDto, ApiTokenDto, Long, ApiTokenSearch>,
+ PaginationWithCriteriaEntity<ApiToken, Long>,
+ GenericReportingManagerIFaces<ApiTokenReporting, CriteriaEntityFromView, Long> {
+
+ String addAndGetToken(ApiToken apiToken, User connectedUser);
+
+ String updateAndGetToken(Long id, ApiToken apiTokenToUpdate, User connectedUser);
+
+ ApiToken lock(Long id, User connectedUser);
+
+ ApiToken unLock(Long id, User connectedUser);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/configuration/CodeStatutHttpManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/configuration/CodeStatutHttpManager.java
new file mode 100644
index 0000000..31a015b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/configuration/CodeStatutHttpManager.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.core.ifaces.configuration;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import com.megatim.fdxconsultation.reporting.model.configuration.CodeStatutHttpReporting;
+import com.megatim.fdxconsultation.model.dto.CodeStatutHttpDto;
+import com.megatim.fdxconsultation.model.searchentities.CodeStatutHttpSearch;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface CodeStatutHttpManager extends GenericCrudManagerIFaces<CodeStatutHttp, CodeStatutHttpDto, CodeStatutHttpDto, Long, CodeStatutHttpSearch>,
+ PaginationWithCriteriaEntity<CodeStatutHttp, Long>,
+ GenericReportingManagerIFaces<CodeStatutHttpReporting, CriteriaEntityFromView, Long> {
+
+ /**
+ * Methode permettant de recuperer le libellé via un code
+ * @param code
+ * @return
+ */
+ public String getLibelleByCode(String code);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/customtypefichier/CustomTypeFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/customtypefichier/CustomTypeFichierManager.java
new file mode 100644
index 0000000..0c0f913
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/customtypefichier/CustomTypeFichierManager.java
@@ -0,0 +1,58 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.customtypefichier;
+
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumnData;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.TypeFichierReportingManagerIFaces;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CustomTypeFichierManager extends TypeFichierReportingManagerIFaces {
+
+ default List<Object> initializeDataSource(List<FdxTableRow> data, Class<?> classe) {
+ List<Object> finalData = new ArrayList<>();
+
+ try {
+ for (FdxTableRow fdxTableRow : data) {
+ Object dynamicObject = classe.newInstance();
+
+ for (FdxTableColumnData dc : fdxTableRow.getDataColumns()) {
+ Method method = new PropertyDescriptor(dc.getName(), classe).getWriteMethod();
+ method.invoke(dynamicObject, dc.getValue());
+ }
+ finalData.add(dynamicObject);
+ }
+ } catch (InstantiationException | IllegalAccessException | IntrospectionException | IllegalArgumentException | InvocationTargetException ex) {
+ Logger.getLogger(CustomTypeFichierManager.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ return finalData;
+ }
+
+ //Chargement de la classe compilée.
+ default Class<?> loadClass(String className) throws MalformedURLException, ClassNotFoundException {
+
+ URLClassLoader classLoader = URLClassLoader.newInstance(new URL[]{Paths.get(AppCommonContext.DYNAMIC_CLASSES_DIR).toUri().toURL()});
+ return Class.forName(AppCommonContext.DYNAMIC_CLASSES_PACKAGE + "." + className, true, classLoader);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionManager.java
new file mode 100644
index 0000000..302eb3d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionManager.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.core.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionManager extends ManagerWithCriteriaEntityIFaces<DataProduction, Long, User>,
+ GenericReportingManagerIFaces<DataProductionDto, CriteriaEntityFromView, Long> {
+
+ List<DataProduction> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<DataProduction> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+ List<DataProduction> findByStatutDataProduction(StatutDataProduction statut);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionToDeleteManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionToDeleteManager.java
new file mode 100644
index 0000000..1ede2e4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/DataProductionToDeleteManager.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionToDeleteManager extends ManagerWithCriteriaEntityIFaces<DataProductionToDelete, Long, User> {
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/metadata/ProductionMetaDataManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/metadata/ProductionMetaDataManager.java
new file mode 100644
index 0000000..93908ce
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/dataproduction/metadata/ProductionMetaDataManager.java
@@ -0,0 +1,18 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ProductionMetaDataManager extends ManagerWithCriteriaEntityIFaces< ProductionMetaData, Long, User> {
+
+ void deleteById(Long dataProductionId);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/CategoryManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/CategoryManager.java
new file mode 100644
index 0000000..2e0f5ba
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/CategoryManager.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.core.ifaces.documents;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Category;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface CategoryManager extends GenericManager<Category, Long> {
+
+ Category add(Category category, User connectedUser);
+
+ Category update(Long id, Category category, User connectedUser);
+
+ Category delete(Long id, User connectedUser);
+
+ List<Category> loadAll();
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/DocumentManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/DocumentManager.java
new file mode 100644
index 0000000..c9810d6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/documents/DocumentManager.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxconsultation.core.ifaces.documents;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Document;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DocumentManager extends GenericManager<Document, Long> {
+
+ Document add(Long CategoryId, Document document, User connectedUser);
+
+ Document update(Long id, Document document, User connectedUser);
+
+ Document delete(Long id, User connectedUser);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/favoritessearch/FavoriteSearchManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/favoritessearch/FavoriteSearchManager.java
new file mode 100644
index 0000000..57d98fe
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/favoritessearch/FavoriteSearchManager.java
@@ -0,0 +1,20 @@
+package com.megatim.fdxconsultation.core.ifaces.favoritessearch;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.FavoriteSearchDto;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface FavoriteSearchManager extends GenericManager<FavoriteSearch, Long>, PaginationWithCriteriaEntity<FavoriteSearch, Long> {
+
+ void add(FavoriteSearchDto favoriteSearchRequest, User user);
+
+ List<FavoriteSearch> all(String userName);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/DataConsumptionOperations.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/DataConsumptionOperations.java
new file mode 100644
index 0000000..85183a6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/DataConsumptionOperations.java
@@ -0,0 +1,32 @@
+/*
+ * 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.ifaces.helper;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.PageData;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataConsumptionOperations {
+
+ List<Map<String, Object>> findByCriteria(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion);
+
+ PageData findByCriteriaWithPagination(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion, int pageNumber, int pageSize);
+
+ Long count(String referentielVersion, String codeTypeFichier, CriteriaEntityFromView criterion);
+
+ List<ColumnDefinition> getPrintableColumns(String referentielVersion, String codeTypeFichier);
+
+ public File printAll(String referentielVersion, String codeTypeFichier, CustomTypeFichierReportConfigurationFromView reportConfigurationFromView, User userConnected) throws Exception;
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RequestHandler.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RequestHandler.java
new file mode 100644
index 0000000..38d6c04
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RequestHandler.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RequestHandler {
+
+ void deleteTableauBord(Long id);
+
+ List<TableauBordSlimDto> findTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception;
+
+ List<TableauBordSlimDto> findTableauBordWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) throws Exception;
+
+ Long countTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception;
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RoutingChecker.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RoutingChecker.java
new file mode 100644
index 0000000..b63919b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/RoutingChecker.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface RoutingChecker {
+
+ void stopIfNotProducer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant);
+
+ void stopIfNotConsumer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant);
+
+// void stopIfNatureProductionIsNotCumulative(String codeTypeFichier, String referentielEncours);
+//
+// void stopIfTypeFichierNotExists(String codeTypeFichier, DataInMemory dataInMemory);
+//
+// void stopIfCurrentReferentielNotExists(DataInMemory data);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableInsert.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableInsert.java
new file mode 100644
index 0000000..a127caf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableInsert.java
@@ -0,0 +1,21 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableInsert {
+
+ Long insert(CommonDataProduction dataProduction, List<FdxTableRow> data, Connection connection) throws NamingException, SQLException, Exception;
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableauBordHandler.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableauBordHandler.java
new file mode 100644
index 0000000..7011d3a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/helper/TableauBordHandler.java
@@ -0,0 +1,94 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.helper;
+
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordDto;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import java.util.Set;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordHandler {
+
+ TableauBordDto tableauBordToTableauBordDto(TableauBord tableauBord);
+
+ TableauBord tableauBordDtoToTableauBord(TableauBordDto dto, Referentiel referentiel);
+
+ TableConfigurationDto tableConfigurationToTableConfigurationDto(TableConfiguration tableConf);
+
+ void reconduireTableauBordValides(Referentiel previousRef, Referentiel newRef, Set<String> typeFichiersToMigrate);
+
+ void stopIfUserSpecificTableauBordExists(String codeTypeFichier, String referentielVersion, String userName) throws Exception;
+
+ void stopIfGlobaleTableauBordExists(String codeTypeFichier, String referentielVersion) throws Exception;
+
+ public default CriteriaEntityFromView criteriaEntityPersistedToCriteriaEntityFromView(CriteriaEntityPersisted persisted) {
+ if (persisted != null) {
+ CriteriaEntityFromView mainCriterion = new CriteriaEntityFromView();
+
+ if (persisted.getSubCriterias() != null && !persisted.getSubCriterias().isEmpty()) {
+ mainCriterion.setCriteriaLogicConnector(persisted.getCriteriaLogicConnector());
+ persisted.getSubCriterias().stream().forEach(c -> {
+ CriteriaEntityFromView criterionfromView = criteriaEntityPersistedToCriteriaEntityFromView(c);
+
+ if (criterionfromView != null) {
+ mainCriterion.getSubCriterias().add(criterionfromView);
+ }
+
+ });
+ return mainCriterion;
+ } else {
+ mainCriterion.setNomColonne(persisted.getNomColonne());
+ mainCriterion.setOperateur(persisted.getOperateur());
+ mainCriterion.setCriteriaValue(getCriteriaValue(persisted));
+ return mainCriterion;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public default Object getCriteriaValue(CriteriaEntityPersisted persisted) {
+
+ if (persisted.getCriteriaDateListValue() != null && !persisted.getCriteriaDateListValue().isEmpty()) {
+ return persisted.getCriteriaDateListValue();
+
+ } else if (persisted.getCriteriaDateLowerBound() != null && persisted.getCriteriaDateUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaDateLowerBound(), persisted.getCriteriaDateUpperBound());
+
+ } else if (persisted.getCriteriaDateValue() != null) {
+ return persisted.getCriteriaDateValue();
+
+ } else if (persisted.getCriteriaNumericListValue() != null && !persisted.getCriteriaNumericListValue().isEmpty()) {
+ return persisted.getCriteriaNumericListValue();
+
+ } else if (persisted.getCriteriaNumericLowerBound() != null && persisted.getCriteriaNumericUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaNumericLowerBound(), persisted.getCriteriaNumericUpperBound());
+
+ } else if (persisted.getCriteriaNumericValue() != null) {
+ return persisted.getCriteriaNumericValue();
+
+ } else if (persisted.getCriteriaStringListValue() != null && !persisted.getCriteriaStringListValue().isEmpty()) {
+ return persisted.getCriteriaStringListValue();
+
+ } else if (persisted.getCriteriaStringLowerBound() != null && persisted.getCriteriaStringUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaStringLowerBound(), persisted.getCriteriaStringUpperBound());
+
+ } else if (persisted.getCriteriaStringValue() != null) {
+ return persisted.getCriteriaStringValue();
+
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/AppColumnDeleter.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/AppColumnDeleter.java
new file mode 100644
index 0000000..2842132
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/AppColumnDeleter.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.integration;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AppColumnDeleter {
+ void delete();
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/ColumnDefinitionManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/ColumnDefinitionManager.java
new file mode 100644
index 0000000..a82f89e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/ColumnDefinitionManager.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxconsultation.core.ifaces.integration;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.ColumnDefinitionId;
+import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ColumnDefinitionManager extends CustomManagerIFaces<ColumnDefinition, ColumnDefinitionId, ColumnDefinitionSearch, User> {
+
+ public ColumnDefinition findByNameAndReferentielAndTypeFichier(String columnName, String referentielVersion, String codeTypeFichier);
+
+ public List<ColumnDefinition> findByReferentiel(String referentielVersion);
+
+ public List<ColumnDefinition> findByReferentielAndTypeFichier(String referentielVersion, String codeTypeFichier);
+
+ public Set<String> findTypeFichierByReferentiel(String referentielVersion);
+
+ Map<String, ColumnDefinition> getColumnsDefimitionMap(String codeTypeFichier, String referentielVersion);
+
+ List<Tuple> byRefVersionAndByTypeFichier();
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/EchecIntegrationManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/EchecIntegrationManager.java
new file mode 100644
index 0000000..8851697
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/EchecIntegrationManager.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.integration;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.integration.EchecIntegration;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface EchecIntegrationManager extends CustomManagerIFaces<EchecIntegration, Long, EchecIntegration, User>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/TableDefinitionManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/TableDefinitionManager.java
new file mode 100644
index 0000000..873ab29
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/integration/TableDefinitionManager.java
@@ -0,0 +1,19 @@
+/*
+ * 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.ifaces.integration;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinitionId;
+import com.megatim.fdxcommons.model.searchentities.TableDefinitionSearch;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableDefinitionManager extends CustomManagerIFaces<TableDefinition, TableDefinitionId, TableDefinitionSearch, User> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/ApiUserActionLogManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/ApiUserActionLogManager.java
new file mode 100644
index 0000000..41cae11
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/ApiUserActionLogManager.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconsultation.core.ifaces.log;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+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 com.megatim.fdxconsultation.reporting.model.log.ApiUserActionLogReporting;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApiUserActionLogManager extends ManagerWithCriteriaEntityIFaces<ApiUserActionLog, Long, User>,
+ GenericReportingManagerIFaces<ApiUserActionLogReporting, CriteriaEntityFromView, Long> {
+
+ List<UserActionStatDto> getByStatut(ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ List<UserActionStatData> getByStatutAndUserName(ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ List<UserActionStatData> getByStatutAndPath(ApiUserActionSummarySearch apiUserActionSummarySearch);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/UserActionLogManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/UserActionLogManager.java
new file mode 100644
index 0000000..6986664
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/log/UserActionLogManager.java
@@ -0,0 +1,27 @@
+/*
+ * 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.ifaces.log;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface UserActionLogManager extends ManagerWithCriteriaEntityIFaces<UserActionLog, Long, User>,
+ GenericReportingManagerIFaces<UserActionLogDto, CriteriaEntityFromView, Long> {
+
+ public void log(HttpHeaders headers, @Context HttpServletRequest request,
+ String message, String utilisateur);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/message/systeme/MessageSystemeManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/message/systeme/MessageSystemeManager.java
new file mode 100644
index 0000000..05f3524
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/message/systeme/MessageSystemeManager.java
@@ -0,0 +1,60 @@
+package com.megatim.fdxconsultation.core.ifaces.message.systeme;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxcommons.model.enumeration.*;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.MessageSystemeDto;
+import com.megatim.fdxconsultation.model.message.systeme.MessageSysteme;
+import java.util.List;
+
+/**
+ * Interface etendue par les interfaces locale et remote du manager
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface MessageSystemeManager extends GenericManager<MessageSysteme, Long> {
+
+ /**
+ * Nom du service
+ *
+ */
+ public final static String SERVICE_NAME = "MessageSystemeManager";
+
+ /**
+ * Permet d'ajouter un message
+ * @param typeMessageSysteme
+ * @param typeIdMessageSysteme
+ * @param contenu
+ * @param utilisateur
+ */
+ public void ajouter(TypeMessageSysteme typeMessageSysteme, TypeIdMessageSysteme typeIdMessageSysteme, String contenu, User utilisateur);
+
+ /**
+ * Permet de recuperer tous les messages spécifiques à un utilisateur
+ * @param utilisateur
+ * @return
+ */
+ public List<MessageSysteme> recupererTousLesMessages(User utilisateur);
+
+ /**
+ * Permet de recuperer un message spécifique à un utilisateur
+ * @param utilisateur
+ * @return
+ */
+ public MessageSystemeDto recupererUnMessageSystemeDto(User utilisateur);
+
+ /**
+ * Permet de supprimer tous les messages spécifiques à un utilisateur
+ * @param utilisateur
+ */
+ public void supprimerTousLesMessageSystemeUtilisateur(User utilisateur);
+
+ /**
+ * Permet de determine s'il existe au moins un message avec le type action système passé en paramètre
+ * @param typeActionSysteme
+ * @param utilisateur
+ * @return
+ */
+ public boolean siMessageTypeActionSystemeExiste(TypeActionSysteme typeActionSysteme, User utilisateur);
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ApplicationSourceManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ApplicationSourceManager.java
new file mode 100644
index 0000000..a798a06
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ApplicationSourceManager.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApplicationSourceManager extends ManagerWithCriteriaEntityIFaces<ApplicationSource, String, User>,
+ CommonReadManager<ApplicationSource, ApplicationSource> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ExtensionFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ExtensionFichierManager.java
new file mode 100644
index 0000000..72d5c61
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ExtensionFichierManager.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ExtensionFichierReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ExtensionFichierManager extends ManagerWithCriteriaEntityIFaces<ExtensionFichier, String, User>,
+ CommonReadManager<ExtensionFichier, ExtensionFichier>,
+ GenericReportingManagerIFaces<ExtensionFichierReporting, CriteriaEntityFromView, String> {
+
+ List<ExtensionFichier> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<ExtensionFichier> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeNoeudManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeNoeudManager.java
new file mode 100644
index 0000000..94a8c95
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeNoeudManager.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeNoeudReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeNoeudManager extends ManagerWithCriteriaEntityIFaces<GroupeNoeud, String, User>,
+ CommonReadManager<GroupeNoeud, GroupeNoeud>,
+ GenericReportingManagerIFaces<GroupeNoeudReporting, CriteriaEntityFromView, String> {
+
+ List<GroupeNoeud> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<GroupeNoeud> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeParticipantManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeParticipantManager.java
new file mode 100644
index 0000000..222945d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/GroupeParticipantManager.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeParticipantReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeParticipantManager extends ManagerWithCriteriaEntityIFaces<GroupeParticipant, String, User>,
+ CommonReadManager<GroupeParticipant, GroupeParticipant>,
+ GenericReportingManagerIFaces<GroupeParticipantReporting, CriteriaEntityFromView, String> {
+
+ List<GroupeParticipant> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<GroupeParticipant> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/NoeudManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/NoeudManager.java
new file mode 100644
index 0000000..5d40723
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/NoeudManager.java
@@ -0,0 +1,29 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.NoeudReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface NoeudManager extends ManagerWithCriteriaEntityIFaces<Noeud, String, User>,
+ CommonReadManager<Noeud, Noeud>,
+ GenericReportingManagerIFaces<NoeudReporting, CriteriaEntityFromView, String> {
+
+ List<Noeud> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<Noeud> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ParticipantManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ParticipantManager.java
new file mode 100644
index 0000000..203d699
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ParticipantManager.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ParticipantReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ParticipantManager extends ManagerWithCriteriaEntityIFaces<Participant, String, User>,
+ CommonReadManager<Participant, Participant>, GenericReportingManagerIFaces<ParticipantReporting, CriteriaEntityFromView, String>,
+ PaginationWithSearchEntity<Participant, String, ParticipantSearch> {
+
+ List<Participant> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<Participant> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/PaysManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/PaysManager.java
new file mode 100644
index 0000000..510575d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/PaysManager.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.PaysReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaysManager extends ManagerWithCriteriaEntityIFaces<Pays, String, User>,
+ CommonReadManager<Pays, Pays>,
+ GenericReportingManagerIFaces<PaysReporting, CriteriaEntityFromView, String> {
+
+ List<Pays> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<Pays> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ReferentielManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ReferentielManager.java
new file mode 100644
index 0000000..6143ffd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ReferentielManager.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ReferentielReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielManager extends ManagerWithCriteriaEntityIFaces<Referentiel, String, User>,
+ CommonReadManager<Referentiel, Referentiel>,
+ GenericReportingManagerIFaces<ReferentielReporting, CriteriaEntityFromView, String>,
+ PaginationWithSearchEntity<Referentiel, String, ReferentielSearch> {
+
+ public List<Referentiel> findByStatutReferentiel(StatutReferentiel statutReferentiel);
+
+ public Referentiel getReferentielEnCours();
+
+ List<Referentiel> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<Referentiel> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+ public void archiverReferentielEncours();
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/RoutageManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/RoutageManager.java
new file mode 100644
index 0000000..76c47d9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/RoutageManager.java
@@ -0,0 +1,38 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.RoutageId;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import java.util.List;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.RoutageReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RoutageManager extends ManagerWithCriteriaEntityIFaces<Routage, RoutageId, User>,
+ GenericReportingManagerIFaces<RoutageReporting, CriteriaEntityFromView, TypeFichier>,
+ CommonReadManager<Routage, Routage> {
+
+ List<Routage> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<Routage> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+ public CriteriaFormRequest getExportCustumOneCriterion(String codeTypeFichier, String versionReferentiel);
+
+ List<Participant> getParticipantsForSend(String versionReferentiel, String codeTypeFichier);
+
+ List<Participant> getParticipantsForReceive(String versionReferentiel, String codeTypeFichier);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/StructureLigneManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/StructureLigneManager.java
new file mode 100644
index 0000000..7d8c169
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/StructureLigneManager.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface StructureLigneManager extends ManagerWithCriteriaEntityIFaces<StructureLigne, String, User>,
+ CommonReadManager<StructureLigne, StructureLigne> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/TypeFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/TypeFichierManager.java
new file mode 100644
index 0000000..9f38411
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/TypeFichierManager.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import java.util.List;
+import java.util.Map;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.reporting.model.referentiel.TypeFichierReporting;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TypeFichierManager extends ManagerWithCriteriaEntityIFaces<TypeFichier, String, User>,
+ CommonReadManager<TypeFichier, TypeFichier>, GenericReportingManagerIFaces<TypeFichierReporting, CriteriaEntityFromView, String>,
+ PaginationWithSearchEntity<TypeFichier, String, TypeFichierSearch> {
+
+ Map<String, List<String>> particpantToFichierDto(String username);
+
+ List<TypeFichier> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields);
+
+ List<TypeFichier> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierConfigurationManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierConfigurationManager.java
new file mode 100644
index 0000000..9e494e3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierConfigurationManager.java
@@ -0,0 +1,20 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/ValidateurFichierConfigurationemplates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/ValidateurFichierConfigurationemplates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfigurationId;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ValidateurFichierConfigurationManager extends ManagerWithCriteriaEntityIFaces<ValidateurFichierConfiguration, ValidateurFichierConfigurationId, User>,
+ CommonReadManager<ValidateurFichierConfiguration, ValidateurFichierConfiguration> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierManager.java
new file mode 100644
index 0000000..835dca8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/ValidateurFichierManager.java
@@ -0,0 +1,23 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.CommonReadManager;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericReportingManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ValidateurFichierManager extends ManagerWithCriteriaEntityIFaces<ValidateurFichier, String, User>,
+ CommonReadManager<ValidateurFichier, ValidateurFichier>,
+ GenericReportingManagerIFaces<ValidateurFichierDto, CriteriaEntityFromView, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueManager.java
new file mode 100644
index 0000000..ca157bc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/historique/ReferentielIntegrationHistoriqueManager.java
@@ -0,0 +1,22 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel.historique;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistoriqueId;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielIntegrationHistoriqueManager extends CustomManagerIFaces<ReferentielIntegrationHistorique, ReferentielIntegrationHistoriqueId, ReferentielIntegrationHistorique, User> {
+
+ public ReferentielIntegrationHistorique suitableIntegrationHistorique(String codeTypeFichier, String refVersion);
+
+ List<ReferentielIntegrationHistorique> suitableIntegrationHistorique(String refVersion);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/natureproduction/NatureProductionFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/natureproduction/NatureProductionFichierManager.java
new file mode 100644
index 0000000..0eef5c0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/referentiel/natureproduction/NatureProductionFichierManager.java
@@ -0,0 +1,20 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.referentiel.natureproduction;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichierId;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface NatureProductionFichierManager extends CustomManagerIFaces<NatureProductionFichier, NatureProductionFichierId, NatureProductionFichier, User> {
+
+ List<NatureProductionFichier> getByReferentiel(String referentielVersion);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/PlanificationManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/PlanificationManager.java
new file mode 100644
index 0000000..6c183e3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/PlanificationManager.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.remoteaction;
+
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PlanificationManager extends GenericCrudManagerIFaces<Planification, Planification, Planification, Long, User> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/RemoteConfigurationManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/RemoteConfigurationManager.java
new file mode 100644
index 0000000..9f89feb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/remoteaction/RemoteConfigurationManager.java
@@ -0,0 +1,26 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.remoteaction;
+
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.GenericCrudManagerIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithCriteriaEntity;
+import com.megatim.fdxconsultation.model.administration.User;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RemoteConfigurationManager extends GenericCrudManagerIFaces<RemoteConfiguration, RemoteConfigurationDto, RemoteConfigurationDto, String, User>,
+ PaginationWithCriteriaEntity<RemoteConfiguration, String> {
+
+ RemoteConfiguration saveAndSend(RemoteConfiguration config, User connectedUser);
+
+ RemoteConfiguration updateAndSend(String id, RemoteConfiguration config, User connectedUser);
+
+ void deleteAndSend(String id, User connectedUser);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/DashboardFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/DashboardFichierManager.java
new file mode 100644
index 0000000..c63441b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/DashboardFichierManager.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DashboardFichierManager {
+
+ List<TypeFichier> tableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countTableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch);
+
+ List<TypeFichier> tableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countTableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/TypeFichierReferentielManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/TypeFichierReferentielManager.java
new file mode 100644
index 0000000..90b057a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/TypeFichierReferentielManager.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierReferentielManager {
+
+ List<TypeFichier> all(int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity);
+
+ List<TypeFichier> all(String userName, int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity);
+
+ Long count(TypeFichierReferentielSearch searchEntity);
+
+ Long count(String userName, TypeFichierReferentielSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserParticipantManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserParticipantManager.java
new file mode 100644
index 0000000..f31be98
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserParticipantManager.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserParticipantManager {
+
+ List<Participant> findUserParticipants(String userName);
+
+ List<Participant> findUserParticipantsWithPagination(String userName, ParticipantSearch participantSearch, int pageNumber, int pageSize);
+
+ List<Participant> findAllUserParticipants(String userName, ParticipantSearch participantSearch);
+
+ Long countUserParticipants(String userName, ParticipantSearch participantSearch);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserTypeFichierManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserTypeFichierManager.java
new file mode 100644
index 0000000..0bec3db
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/searchs/UserTypeFichierManager.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxconsultation.core.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserTypeFichierManager {
+
+ List<TypeFichier> findUserTypeFichiers(String userName);
+
+ List<TypeFichier> findUserTypeFichiersWithPagination(String userName, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countUserTypeFichiers(String userName, TypeFichierSearch typeFichierSearch);
+
+ List<TypeFichier> findUserTypeFichiersInReferentielWithPagination(String userName, String referentiel, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countUserTypeFichiersInReferentiel(String userName, String referentiel, TypeFichierSearch typeFichierSearch);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/DisplayOptionsManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/DisplayOptionsManager.java
new file mode 100644
index 0000000..48d2e35
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/DisplayOptionsManager.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxconsultation.core.ifaces.settings;
+
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DisplayOptionsManager {
+
+ DisplayOptions current();
+
+ DisplayOptions edit(DisplayOptions entity);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/SettingsManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/SettingsManager.java
new file mode 100644
index 0000000..5dc14c0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/settings/SettingsManager.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxconsultation.core.ifaces.settings;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface SettingsManager {
+
+ Referentiel currentReferentiel();
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/CriteriaEntityPersistedManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/CriteriaEntityPersistedManager.java
new file mode 100644
index 0000000..ac21adf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/CriteriaEntityPersistedManager.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CriteriaEntityPersistedManager extends ManagerWithCriteriaEntityIFaces<CriteriaEntityPersisted, Long, User> {
+
+ List<CriteriaEntityPersisted> subCriterias(Long id);
+
+ CriteriaEntityFromView criteriaEntityPersistedToCriteriaEntityFromView(CriteriaEntityPersisted persisted);
+
+ CriteriaEntityPersisted constructCriteriaPersisted(String codeTypeFichier, String referentielVersion, CriteriaEntityFromView criterionFromView);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableConfigurationManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableConfigurationManager.java
new file mode 100644
index 0000000..349f424
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableConfigurationManager.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableConfigurationManager extends ManagerWithCriteriaEntityIFaces<TableConfiguration, Long, User> {
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordColumnManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordColumnManager.java
new file mode 100644
index 0000000..20cbe82
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordColumnManager.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordColumnManager extends ManagerWithCriteriaEntityIFaces<TableauBordColumn, Long, User> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordGlobalSearchManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordGlobalSearchManager.java
new file mode 100644
index 0000000..8f360f5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordGlobalSearchManager.java
@@ -0,0 +1,8 @@
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordGlobalSearch;
+
+public interface TableauBordGlobalSearchManager extends PaginationWithSearchEntity<TableauBord, Long, TableauBordGlobalSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordManager.java
new file mode 100644
index 0000000..10cb57a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordManager.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import java.util.List;
+import java.util.Map;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.ManagerWithCriteriaEntityIFaces;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.dto.stats.StatResultDto;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSearch;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+
+public interface TableauBordManager extends ManagerWithCriteriaEntityIFaces<TableauBord, Long, User>, PaginationWithSearchEntity<TableauBord, Long, TableauBordSearch> {
+
+ public TableauBord findByUserAndTypeFichierAndReferentiel(Long userId, String codeTypeFichier, String referentielVersion);
+
+ public TableauBord findByTypeConfigurationAndReferentiel(String codeTypeFichier, String referentielVersion, TypeConfigurationTableauBord typeConfiguration);
+
+ Map<String, List<String>> userTableauBordToTypeFichiers(String userName);
+
+ Map<String, List<String>> globalTableauBordToTypeFichiers();
+
+ List<TableauBord> deleteUserTableauBord(User user);
+
+ List<TableauBord> findByReferentiel(String referentielVersion);
+
+ TableauBord save(User user, TableauBordRequest tableauBordRequest);
+
+ TableauBord save(TableauBordRequest tableauBordRequest);
+
+ TableauBord get(Long id);
+
+ void update(Long id, TableauBordRequest tableauBordRequest);
+
+ void delete(Long id);
+
+ public StatResultDto getDatas(String referentielVersion, String codeTypeFichier);
+
+ public StatResultDto getDatas(User user, String referentielVersion, String codeTypeFichier);
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordUserSpecificSearchManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordUserSpecificSearchManager.java
new file mode 100644
index 0000000..e3d1d09
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/stats/TableauBordUserSpecificSearchManager.java
@@ -0,0 +1,8 @@
+package com.megatim.fdxconsultation.core.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSpecificSearch;
+
+public interface TableauBordUserSpecificSearchManager extends PaginationWithSearchEntity<TableauBord, Long, TableauBordSpecificSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/AgentConfigurationEntityManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/AgentConfigurationEntityManager.java
new file mode 100644
index 0000000..cb4ab8d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/AgentConfigurationEntityManager.java
@@ -0,0 +1,18 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.ifaces.supervision;
+
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.supervision.AgentConfigurationEntity;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AgentConfigurationEntityManager extends CustomManagerIFaces<AgentConfigurationEntity, Long, AgentConfigurationEntity, User> {
+
+ int archiveAgentConfiguration(String code);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/StandaloneServerStateEntityManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/StandaloneServerStateEntityManager.java
new file mode 100644
index 0000000..93d0fab
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/StandaloneServerStateEntityManager.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxconsultation.core.ifaces.supervision;
+
+import com.fdx.messaging.common.StandaloneServerState;
+import com.megatim.fdxcommons.core.ifaces.abstracts.CustomManagerIFaces;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface StandaloneServerStateEntityManager extends CustomManagerIFaces<StandaloneServerStateEntity, Long, StandaloneServerStateEntity, User> {
+
+ @Transactional
+ public StandaloneServerStateEntity persistStandaloneConfigurationStateEntity(StandaloneServerState standaloneServerState);
+
+ public StandaloneServerStateEntity getCurrentStandaloneServerStateEntity();
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/TransfertManager.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/TransfertManager.java
new file mode 100644
index 0000000..91d7f97
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/supervision/TransfertManager.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.core.ifaces.supervision;
+
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxconsultation.core.ifaces.abtracts.PaginationWithSearchEntity;
+import com.megatim.fdxconsultation.model.searchentities.TransfertSearch;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardRequest;
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardResponse;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import java.util.List;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TransfertManager extends GenericManager<Transfert, Long>, PaginationWithSearchEntity<Transfert, Long, TransfertSearch> {
+
+ @Transactional
+ Transfert persistTransfert(Transfert transfert);
+
+ StandaloneDashboardResponse standaloneDashboardResponse(StandaloneDashboardRequest standaloneDashboardRequest);
+
+ List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest);
+}
diff --git a/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/tools/SourceCompiler.java b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/tools/SourceCompiler.java
new file mode 100644
index 0000000..c42a7a2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-ifaces/src/main/java/com/megatim/fdxconsultation/core/ifaces/tools/SourceCompiler.java
@@ -0,0 +1,29 @@
+/*
+ * 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.ifaces.tools;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SourceCompiler {
+
+// public static Class<?> compileAndLoad(UnitSourceGenerator unitSG, String binaryFilePath, String fullQualifiedName) throws ClassNotFoundException {
+// ComponentContainer componentContainer = ComponentContainer.getInstance();
+// JavaMemoryCompiler javaMemoryCompiler = componentContainer.getJavaMemoryCompiler();
+//
+// Config config = Compilation.Config.forUnitSourceGenerator(unitSG);
+// config = config.storeCompiledClassesTo(binaryFilePath);
+// ProducerTask<Compilation.Result> compilationTask = javaMemoryCompiler.compile(config);
+// Compilation.Result compilationResult = compilationTask.join();
+//
+// ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+// ClassLoaders.addClassPaths(classLoader, compilationResult.getDependencies());
+// ClassLoaders.addClassPath(classLoader, compilationResult.getClassPath().getAbsolutePath());
+//
+// return classLoader.loadClass(fullQualifiedName);
+// }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/.gitignore b/fdx-consultation/fdxconsultation-core-impl/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-core-impl/nb-configuration.xml b/fdx-consultation/fdxconsultation-core-impl/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-core-impl/pom.xml b/fdx-consultation/fdxconsultation-core-impl/pom.xml
new file mode 100644
index 0000000..1c733e0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/pom.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.core.impl</groupId>
+ <artifactId>fdxconsultation-core-impl</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.tools</groupId>
+ <artifactId>fdxcommons-tools</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.dao.impl</groupId>
+ <artifactId>fdxconsultation-dao-impl</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.core.ifaces</groupId>
+ <artifactId>fdxconsultation-core-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.reporting</groupId>
+ <artifactId>fdxconsultation-reporting</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation-tools-entities</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericManagerLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.ibm.icu</groupId>
+ <artifactId>icu4j</artifactId>
+ <version>61.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxconsultation-core-impl</name>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/ActionManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/ActionManagerImpl.java
new file mode 100644
index 0000000..e2ff46e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/ActionManagerImpl.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.core.impl.administration;
+
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.ActionManager;
+import com.megatim.fdxconsultation.dao.ifaces.administration.ActionDAO;
+import com.megatim.fdxconsultation.model.administration.Action;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class ActionManagerImpl extends AbstractGenericManager<Action, Long> implements ActionManager {
+
+ @Inject
+ protected ActionDAO dao;
+
+ public ActionManagerImpl() {
+ }
+
+ @Override
+ public GenericDAO<Action, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/HistoriqueMotDePasseManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/HistoriqueMotDePasseManagerImpl.java
new file mode 100644
index 0000000..ba55b79
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/HistoriqueMotDePasseManagerImpl.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.core.impl.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.HistoriqueMotDePasseManager;
+import com.megatim.fdxconsultation.dao.ifaces.administration.HistoriqueMotDePasseDAO;
+import com.megatim.fdxconsultation.model.administration.HistoriqueMotDePasse;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.Date;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class HistoriqueMotDePasseManagerImpl extends AbstractGenericManager<HistoriqueMotDePasse, Long> implements HistoriqueMotDePasseManager {
+
+ @Inject
+ protected HistoriqueMotDePasseDAO dao;
+
+ public HistoriqueMotDePasseManagerImpl() {
+ }
+
+ @Override
+ public GenericDAO<HistoriqueMotDePasse, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public void ajouter(String motDePasse, User user) {
+
+ //On prepare l'objet
+ HistoriqueMotDePasse historiqueMotDePasse = new HistoriqueMotDePasse();
+ historiqueMotDePasse.setDateCreation(new Date());
+ historiqueMotDePasse.setMotDePasse(motDePasse);
+ historiqueMotDePasse.setUser(user);
+
+ //On save
+ save(historiqueMotDePasse);
+ }
+
+ @Override
+ public boolean siMotDePasseExiste(String motDePasse, User user) {
+ return dao.siMotDePasseExiste(motDePasse, user);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalActionUtilisateurManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalActionUtilisateurManagerImpl.java
new file mode 100644
index 0000000..864ac05
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalActionUtilisateurManagerImpl.java
@@ -0,0 +1,122 @@
+/*
+ * 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.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.administration.JournalActionUtilisateurManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.JournalActionUtilisateurDAO;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalActionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.JournalActionUtilisateurDto;
+import com.megatim.fdxconsultation.model.searchentities.JournalActionUtilisateurSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class JournalActionUtilisateurManagerImpl extends AbstractGenericManager<JournalActionUtilisateur, Long> implements JournalActionUtilisateurManager {
+
+ @EJB
+ private JournalActionUtilisateurDAO dao;
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<JournalActionUtilisateurReporting> getClazz() {
+ return JournalActionUtilisateurReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<JournalActionUtilisateurReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToJournalActionUtilisateurReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<JournalActionUtilisateur, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ /**
+ * Permet de recuperer un élément via son id
+ *
+ * @param id
+ * @return
+ */
+ @Override
+ public JournalActionUtilisateur findById(Long id) {
+ return find(getEntityIdName(), id);
+ }
+
+ @Override
+ public GenericDAO<JournalActionUtilisateur, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public JournalActionUtilisateurDto mapToDto(JournalActionUtilisateur entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JournalActionUtilisateurDto mapToDetailDto(JournalActionUtilisateur entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(JournalActionUtilisateurSearch searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JournalActionUtilisateurDto getById(Long id) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalConnexionUtilisateurManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalConnexionUtilisateurManagerImpl.java
new file mode 100644
index 0000000..0cf6d84
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/JournalConnexionUtilisateurManagerImpl.java
@@ -0,0 +1,121 @@
+/*
+ * 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.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.administration.JournalConnexionUtilisateurManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.JournalConnexionUtilisateurDAO;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalConnexionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.JournalConnexionUtilisateurDto;
+import com.megatim.fdxconsultation.model.searchentities.JournalConnexionUtilisateurSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class JournalConnexionUtilisateurManagerImpl extends AbstractGenericManager<JournalConnexionUtilisateur, Long> implements JournalConnexionUtilisateurManager {
+
+ @EJB
+ private JournalConnexionUtilisateurDAO dao;
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<JournalConnexionUtilisateurReporting> getClazz() {
+ return JournalConnexionUtilisateurReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<JournalConnexionUtilisateurReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToJournalConnexionUtilisateurReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<JournalConnexionUtilisateur, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ /**
+ * Permet de recuperer un élément via son id
+ * @param id
+ * @return
+ */
+ @Override
+ public JournalConnexionUtilisateur findById(Long id){
+ return find(getEntityIdName(), id);
+ }
+
+ @Override
+ public GenericDAO<JournalConnexionUtilisateur, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public JournalConnexionUtilisateurDto mapToDto(JournalConnexionUtilisateur entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JournalConnexionUtilisateurDto mapToDetailDto(JournalConnexionUtilisateur entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(JournalConnexionUtilisateurSearch searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public JournalConnexionUtilisateurDto getById(Long id) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/RoleManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/RoleManagerImpl.java
new file mode 100644
index 0000000..781f3ac
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/RoleManagerImpl.java
@@ -0,0 +1,358 @@
+package com.megatim.fdxconsultation.core.impl.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.commons.tools.exceptions.ApplicationValidationException;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeIdMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonAlredyExistException;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.message.systeme.MessageSystemeManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.RoleDAO;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.reporting.model.administration.RoleReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.RoleSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.rs.tools.utils.RestrictionContainerBuildeUtil;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class RoleManagerImpl extends AbstractGenericManager<Role, Long> implements RoleManager {
+
+ @Inject
+ private RoleDAO dao;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ private MessageSystemeManager messageSystemeManager;
+
+ public RoleManagerImpl() {
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ public Role getCurrentElement() {
+ return dao.getCurrentRole();
+ }
+
+ public Role saveOrUpdateCurrentElement(Role entityToSave) {
+ return dao.save(entityToSave);
+ }
+
+ public Role getUserByUserName(String libelle){
+ List<Role> liste = findByUniqueProperty("libelle", libelle, null);
+ if(liste != null && !liste.isEmpty()){
+ return liste.get(0);
+ }else{
+ return null;
+ }
+ }
+
+ @Override
+ public void validate(String libelle, User utilisateurConnecte) {
+ Role entity = getUserByUserName(libelle);
+ if (entity == null) {
+ throw new CommonRessourceNotFoundException(Role.class);
+ }
+ entity.setEtatOperation(EtatOperation.ACTIF);
+ entity.setDateValidation(new Date());
+ entity.setUtilisateurValidation(utilisateurConnecte != null ? utilisateurConnecte.getUserName() : null);
+ update(entity.getId(), entity);
+
+ }
+
+ @Override
+ public void reject(String libelle, Role role, User utilisateurConnecte) {
+ Role entity = getUserByUserName(libelle);
+ if (entity == null) {
+ throw new CommonRessourceNotFoundException(Role.class);
+ }
+ if (role.getMotifRejet() == null || role.getMotifRejet().isEmpty()) {
+ throw new ApplicationValidationException(Arrays.asList("Le motif de rejet est obligatoire"));
+ }
+ entity.setEtatOperation(EtatOperation.REJETE);
+ entity.setDateRejetValidation(new Date());
+ entity.setUtilisateurRejetValidation(utilisateurConnecte != null ? utilisateurConnecte.getUserName() : null);
+ entity.setMotifRejet(role.getMotifRejet());
+ beforeModify(entity, role, utilisateurConnecte);
+ update(entity.getId(), entity);
+
+ }
+
+ @Override
+ public void beforeModify(Role actualEntity, Role requestEntity, User utilisateurConnecte) {
+ if (actualEntity == null) {
+ throw new CommonRessourceNotFoundException(Role.class);
+ }
+
+ //Si ce libelle existe dejà
+ if (requestEntity.getLibelle() != null && !requestEntity.getLibelle().isEmpty() && !findByUniqueProperty("libelle", requestEntity.getLibelle(), null).isEmpty()) {
+ //On retourne le message d'erreur
+ if (!findByUniqueProperty("libelle", requestEntity.getLibelle(), null).get(0).getLibelle().equals(actualEntity.getLibelle())) {
+ throw new CommonAlredyExistException("libelle", "Ce Libelle Existe déjà.");
+ }
+ }
+
+ //On copie les nouvelles valeurs
+ actualEntity.setLibelle(requestEntity.getLibelle());
+ actualEntity.setDescription(requestEntity.getDescription());
+ actualEntity.setActions(requestEntity.getActions());
+
+ actualEntity.setDateDerniereModification(new Date());
+ if (utilisateurConnecte != null) {
+ actualEntity.setUtilisateurModification(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public Role modify(Long id, Role entity, User connectedUser) {
+ Role actualEntity = find(getEntityIdName(), id);
+ beforeModify(actualEntity, entity, connectedUser);
+ update(id, actualEntity);
+ notifierMajTousLesUtilisateursGroupeViaWebSocket(actualEntity, "Oups ! il semblerait que vos habilitations aient été mis à jour par l’administrateur, en conséquence vous allez être déconnecté, pour que les modifications soient prises en compte, vous pourrez vous reconnecter par la suite.",
+ TypeMessageSysteme.AVERTISSEMENT, TypeIdMessageSysteme.MODIFICATION_GROUPE_UTILISATEUR);
+ return actualEntity;
+ }
+
+ @Override
+ public void beforeRemove(Role entity, User utilisateurConnecte) {
+ //On marque comme supprimé
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+
+ //On set les informations supplementaires
+ entity.setDateSuppression(new Date());
+
+ //Si non null
+ if (utilisateurConnecte != null) {
+
+ //On set les informations supplementaires
+ entity.setUtilisateurSuppression(utilisateurConnecte.getUserName());
+
+ }
+
+ //Si le groupe possède des utilisateurs
+ if (entity != null && siPossedeUtilisateurs(entity)) {
+ throw new CommonApplicationValidationException("Veuillez au préalable retirer tous les utilisateurs liés à ce groupe, avant de supprimer le groupe.");
+ }
+
+ }
+
+ @Override
+ public Role remove(Long id, User connectedUser) {
+ Role entity = find(getEntityIdName(), id);
+ beforeRemove(entity, connectedUser);
+ Role updatedRole = update(id, entity);
+ notifierMajTousLesUtilisateursGroupeViaWebSocket(entity, "Oups ! il semblerait que le groupe utilisateur auquel vous appartennez ait été supprimé par l’administrateur, en conséquence vous allez être déconnecté.",
+ TypeMessageSysteme.AVERTISSEMENT, TypeIdMessageSysteme.SUPPRESSION_GROUPE_UTILISATEUR);
+
+ return updatedRole;
+ }
+
+ @Override
+ public void beforeAdd(Role entity, User utilisateurConnecte) {
+ //Si ce libelle existe dejà
+ if (entity.getLibelle() != null && !entity.getLibelle().isEmpty() && !findByUniqueProperty("libelle", entity.getLibelle(), null).isEmpty()) {
+ //On retourne le message d'erreur
+ throw new CommonAlredyExistException("libelle", "Ce libellé existe déjà.");
+ }
+ entity.setDateCreation(new Date());
+ entity.setEtatOperation(EtatOperation.ATTENTE_VALIDATION);
+
+ if (utilisateurConnecte != null) {
+ //On set les informations supplementaires
+ entity.setUtilisateurCreation(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public boolean siPossedeUtilisateurs(Role role){
+ List<User> utilisateurs = userManager.obtenirListeUtilisateursRole(role);
+ boolean bool = false;
+ if(utilisateurs.isEmpty()){
+ bool = false;
+ }else{
+ bool = true;
+ }
+ return bool;
+ }
+
+ @Override
+ public Class<RoleReporting> getClazz() {
+ return RoleReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false );
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ /**
+ * Methode permettant de determiner le nombre d'utilisateur d'un groupe
+ * @param entity
+ * @return
+ */
+ @Override
+ public Integer obtenirNbreUtilisateurRole(Role entity) {
+ List<User> users = null;
+ Integer nbreUtilisateurs = 0;
+ users = userManager.findByUniqueProperty("role", entity, null);
+ if(users != null && !users.isEmpty()){
+ nbreUtilisateurs = users.size();
+ }
+ return nbreUtilisateurs;
+ }
+
+ /**
+ * Permet de notifier les maj via webSocket
+ * @param groupe
+ * @param message
+ * @param typeMessageSysteme
+ * @param typeIdMessageSysteme
+ */
+ public void notifierMajTousLesUtilisateursGroupeViaWebSocket(Role groupe, String message, TypeMessageSysteme typeMessageSysteme, TypeIdMessageSysteme typeIdMessageSysteme) {
+
+ //Variables
+ List<User> utilisateurs = userManager.obtenirListeUtilisateursRole(groupe);
+
+ //Si non null
+ if(utilisateurs != null && !utilisateurs.isEmpty()){
+
+ //On parcourt la liste
+ for(User utilisateur : utilisateurs){
+
+ //On notifie l'utlisateur
+ messageSystemeManager.ajouter(typeMessageSysteme, typeIdMessageSysteme, message, utilisateur);
+
+ }
+
+ }
+
+ }
+
+ @Override
+ public List<RoleReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ List<OrderByDefinition> orders = new ArrayList<>();
+ orders.add(new OrderByDefinition("id", OrderByType.DESC));
+ List<Role> liste = formaterDonnees(findAll(searchEntity, Arrays.asList(), orders));
+ return CommonsToolsEntity.convertToRoleReporting(liste);
+ }
+
+ @Override
+ public GenericDAO<Role, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public RoleDto mapToDto(Role entity) {
+ return mapstructMapper.roleToRoleDto(entity);
+ }
+
+ @Override
+ public RoleDto mapToDetailDto(Role entity) {
+ return mapstructMapper.roleToRoleDto(entity);
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<Role, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ @Override
+ public PaginationWithSearchEnityDAO<Role, Long, RoleSearch> getPaginationDao() {
+ return dao;
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(RoleSearch searchEntity, TypeOperation typeOperation) {
+ RestrictionsContainer requeteur = RestrictionContainerBuildeUtil.construireRequete(searchEntity, RoleSearch.class);
+ requeteur.addEq("typeOperation", typeOperation);
+ return requeteur;
+ }
+
+ @Override
+ public List<Role> formaterDonnees(List<Role> liste) {
+ if(liste != null){
+ for(Role role : liste){
+ role.setNbreUtilisateur(obtenirNbreUtilisateurRole(role));
+ }
+ }else{
+ liste = new ArrayList<Role>();
+ }
+ return liste;
+ }
+
+ @Override
+ public List<Role> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+ List<Role> datas = paginationWithCriteriaEntityDAO().findAll(criterion, fetchEagerFields, orderByFields);
+ datas = formaterDonnees(datas);
+ return datas;
+ }
+
+ @Override
+ public List<Role> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+ List<Role> datas = paginationWithCriteriaEntityDAO().findAll(criterion, fetchEagerFields, orderByFields);
+ datas = formaterDonnees(datas);
+ return datas;
+ }
+
+ @Override
+ public RoleDto getById(Long id) {
+ Role entity = find(getEntityIdName(), id);
+ return mapToDetailDto(entity);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/UserManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/UserManagerImpl.java
new file mode 100644
index 0000000..c387bd5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/administration/UserManagerImpl.java
@@ -0,0 +1,648 @@
+package com.megatim.fdxconsultation.core.impl.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.commons.tools.exceptions.ApplicationValidationException;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeIdMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonAlredyExistException;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.administration.HistoriqueMotDePasseManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.message.systeme.MessageSystemeManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.UserDAO;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.administration.UserReporting;
+import com.megatim.fdxconsultation.model.dto.EditPasswordDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.dto.UserSlimDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.UserSearch;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.rs.tools.utils.RestrictionContainerBuildeUtil;
+import java.io.File;
+import java.math.BigDecimal;
+import java.security.NoSuchAlgorithmException;
+import java.security.spec.InvalidKeySpecException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class UserManagerImpl extends AbstractGenericManager<User, Long> implements UserManager {
+
+ @Inject
+ protected UserDAO dao;
+
+ @Inject
+ protected HistoriqueMotDePasseManager historiqueMotDePasseManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ TableauBordManager tableauBordManager;
+
+ @Inject
+ private MessageSystemeManager messageSystemeManager;
+
+ /**
+ *
+ */
+ public UserManagerImpl() {
+ }
+
+ @Override
+ public GenericDAO<User, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public UserDto getById(Long id) {
+ return mapToDetailDto(dao.getById(id));
+ }
+
+ public User getCurrentElement() {
+ return dao.getCurrentUser();
+ }
+
+ @Override
+ @Transactional
+ public User modify(Long id, User entity, User connectedUser) {
+ User actualEntity = find(getEntityIdName(), id);
+ beforeModify(actualEntity, entity, connectedUser);
+ update(id, actualEntity);
+ tableauBordManager.deleteUserTableauBord(entity);
+ messageSystemeManager.ajouter(TypeMessageSysteme.AVERTISSEMENT, TypeIdMessageSysteme.MODIFICATION_INFORMATION_UTILISATEUR, "Oups ! il semblerait que vos paramètres personnels aient été mis à jour, en conséquence vous allez être déconnecté, pour que les modifications soient prises en compte, vous pourrez vous reconnecter par la suite.", actualEntity);
+ return actualEntity;
+ }
+
+ @Override
+ public User recuperUtilisateur(String username, String motDePasse) {
+ return dao.recuperUtilisateur(username, motDePasse);
+ }
+
+ @Override
+ public User recuperUtilisateur(String username) {
+ return dao.recuperUtilisateur(username);
+ }
+
+ public User getUserByUserName(String userName) {
+ List<User> liste = findByUniqueProperty("userName", userName, null);
+ if (liste != null && !liste.isEmpty()) {
+ return liste.get(0);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void validate(String userName, User utilisateurConnecte) {
+ User entity = getUserByUserName(userName);
+ if (entity == null) {
+ throw new CommonRessourceNotFoundException(User.class);
+ }
+ entity.setEtatOperation(EtatOperation.ACTIF);
+ entity.setDateValidation(new Date());
+ entity.setUtilisateurValidation(utilisateurConnecte != null ? utilisateurConnecte.getUserName() : null);
+ update(entity.getId(), entity);
+ }
+
+ @Override
+ public void reject(String userName, User user, User utilisateurConnecte) {
+ User entity = getUserByUserName(userName);
+ if (entity == null) {
+ throw new CommonRessourceNotFoundException(User.class);
+ }
+ if (user.getMotifRejet() == null || user.getMotifRejet().isEmpty()) {
+ throw new ApplicationValidationException(Arrays.asList("Le motif de rejet est obligatoire"));
+ }
+ entity.setEtatOperation(EtatOperation.REJETE);
+ entity.setDateRejetValidation(new Date());
+ entity.setUtilisateurRejetValidation(utilisateurConnecte != null ? utilisateurConnecte.getUserName() : null);
+ entity.setMotifRejet(user.getMotifRejet());
+ update(entity.getId(), entity);
+ }
+
+ @Override
+ public UserSlimDto mapToDto(User entity) {
+ return mapstructMapper.userToUserSlimDto(entity);
+ }
+
+ @Override
+ public UserDto mapToDetailDto(User entity) {
+ return mapstructMapper.userToUserDto(entity);
+ }
+
+ @Override
+ public void beforeModify(User actualEntity, User requestEntity, User utilisateurConnecte) {
+ if (actualEntity == null) {
+ throw new CommonRessourceNotFoundException(User.class);
+ }
+ User userWithSameName = recuperUtilisateur(requestEntity.getUserName());
+ if (requestEntity.getUserName() != null && !requestEntity.getUserName().isEmpty() && userWithSameName != null
+ && !requestEntity.getId().equals(userWithSameName.getId())) {
+ throw new CommonAlredyExistException("username", "Un utilisateur avec le même login existe déjà.");
+ }
+ if (requestEntity.isUpdatePassword()) {
+ actualEntity.setPwd(CommonTools.encryptPassword(requestEntity.getPwd()));
+ }
+ actualEntity.setDateDerniereModification(new Date());
+ if (utilisateurConnecte != null) {
+ actualEntity.setUtilisateurModification(utilisateurConnecte.getUserName());
+ }
+ validerMotDePasseModifier(requestEntity.isUpdatePassword(), requestEntity.getPwd(), actualEntity);
+ checkerParticipants(requestEntity);
+ actualEntity.setAlertDelay(requestEntity.getAlertDelay());
+ actualEntity.setAttemps(requestEntity.getAttemps());
+ actualEntity.setAttempsNumber(requestEntity.getAttempsNumber());
+ actualEntity.setConnected(requestEntity.isConnected());
+ actualEntity.setExpirationDelay(requestEntity.getExpirationDelay());
+ actualEntity.setFirstName(requestEntity.getFirstName());
+ actualEntity.setLastName(requestEntity.getLastName());
+ actualEntity.setLocked(requestEntity.isLocked());
+ actualEntity.setActive(requestEntity.isActive());
+ actualEntity.setRole(requestEntity.getRole());
+ actualEntity.setTypeFichiers(requestEntity.getTypeFichiers());
+ actualEntity.setParticipants(requestEntity.getParticipants());
+ }
+
+ @Override
+ public void beforeRemove(User entity, User utilisateurConnecte) {
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+ entity.setDateSuppression(new Date());
+ if (utilisateurConnecte != null) {
+ entity.setUtilisateurSuppression(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public void beforeAdd(User entity, User utilisateurConnecte) {
+ if (entity.getUserName() != null && !entity.getUserName().isEmpty() && recuperUtilisateur(entity.getUserName()) != null) {
+ throw new CommonAlredyExistException("userName", "Un utilisateur avec le même nom utilisateur existe déjà.");
+ }
+ checkerSiMotDePasseComplexe(true, entity.getPwd());
+ checkerParticipants(entity);
+ entity.setPwd(CommonTools.encryptPassword(entity.getPwd()));
+ entity.setDateCreation(new Date());
+ entity.setEtatOperation(EtatOperation.ATTENTE_VALIDATION);
+ entity.setDateDerniereModificationMotDePasse(new Date());
+ if (utilisateurConnecte != null) {
+ entity.setUtilisateurCreation(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public User remove(Long id, User connectedUser) {
+ User entity = find(getEntityIdName(), id);
+ beforeRemove(entity, connectedUser);
+ User updatedUser = update(id, entity);
+ messageSystemeManager.ajouter(TypeMessageSysteme.ERREUR, TypeIdMessageSysteme.SUPPRESSION_COMPTE_UTILISATEUR, "Oups ! il semblerait que votre compte utilisateur ait été supprimé, en conséquence vous allez être déconnecté.", entity);
+
+ return updatedUser;
+ }
+
+ /**
+ * Methode permettant d'effectuer des controles sur les participants (sur la
+ * présence ou non)
+ *
+ * @param utilisateur
+ */
+ private void checkerParticipants(User utilisateur) {
+
+ /* Si non null */
+ if (utilisateur != null && utilisateur.getRole() != null) {
+
+ /* On parcourt la liste des actions */
+ for (Action action : utilisateur.getRole().getActions()) {
+
+ /* Si actions liées à génération des mot de passe pour l'API sont présents */
+ if ((action.getModule().equalsIgnoreCase(AppCommonContext.MODULE_ADMINISTRATION)
+ && action.getPath().equalsIgnoreCase(AppCommonContext.PATH_API_TOKEN))
+ && (utilisateur.getParticipants() == null || utilisateur.getParticipants().isEmpty())) {
+
+ /* On lève l'exception */
+ //throw new ApplicationValidationException(Arrays.asList("Veuillez sélectionner au moins un participant"));
+ }
+
+ }
+
+ }
+
+ }
+
+ @Override
+ public Class<UserReporting> getClazz() {
+ return UserReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<UserReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToUserReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ /**
+ * Permet de recuperer un utilisateur via son id
+ *
+ * @param id
+ * @return
+ */
+ @Override
+ public User findById(Long id) {
+ return find(getEntityIdName(), id);
+ }
+
+ /**
+ * Permet de checker si un mot de passe saisi est complexe
+ *
+ * @param motDePasse
+ */
+ private void checkerSiMotDePasseComplexe(boolean siMotDePasseModifier, String motDePasse) {
+
+ //Variables
+ String erreurs = null;
+
+ //Si mot de passe editer
+ if (siMotDePasseModifier) {
+
+ if (motDePasse != null && !motDePasse.isEmpty() && !motDePasse.matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,20}$")) {
+ erreurs = "Le mot de passe doit contenir :"
+ + " \n\t - Au moins un chiffre"
+ + " \n\t - Au moins une minuscule"
+ + " \n\t - Au moins une majuscule"
+ + " \n\t - Au moins un caractère special (! @ # & ( ))"
+ + " \n\t - Au moins 8 caractères et 20 caractères maximum";
+ };
+
+ //Si erreurs
+ if (erreurs != null && !erreurs.isEmpty()) {
+ throw new CommonApplicationValidationException(erreurs);
+ }
+
+ }
+
+ }
+
+ /**
+ * Permet d'effectuer certains controle après la modification du mot de
+ * passe
+ *
+ * @param siMotDePasseModifier
+ * @param nouveauMotDepasse
+ * @param user
+ */
+ private void validerMotDePasseModifier(boolean siMotDePasseModifier, String nouveauMotDepasse, User user) {
+
+ //Si mot de passe modifié
+ if (siMotDePasseModifier) {
+
+ //Si mot de passe dejà utilisé
+ checkerSiMotDePasseDejaUtilise(nouveauMotDepasse, user);
+
+ //Si mot de passe complexe
+ checkerSiMotDePasseComplexe(siMotDePasseModifier, nouveauMotDepasse);
+
+ //On set la date de derniere modification
+ user.setDateDerniereModificationMotDePasse(new Date());
+
+ }
+
+ }
+
+ /**
+ * Permet de checker si un mot de passe a deja été utilsé
+ *
+ * @param motDePasse
+ * @param user
+ */
+ private void checkerSiMotDePasseDejaUtilise(String motDePasse, User user) {
+ if (historiqueMotDePasseManager.siMotDePasseExiste(motDePasse, user)) { //Si mot de passe déjà utilisé
+ throw new CommonApplicationValidationException("Ce mot de passe correspond à un mot de passe que vous avez déjà utilisé, veuillez en saisir un autre.");
+ } else { //Sinon on enregistre
+ historiqueMotDePasseManager.ajouter(CommonTools.encryptPassword(motDePasse), user);
+ }
+ }
+
+ @Override
+ public void editPassword(String username, EditPasswordDto editPasswordDto) {
+ if (!editPasswordDto.getNewPassword().equals(editPasswordDto.getNewPasswordConfirm())) {
+ throw new CommonApplicationValidationException("Le nouveau mot de passe et le mote de passe de confirmation ne sont pas identiques.");
+ }
+ User user = recuperUtilisateur(username);
+ if (user == null) {
+ throw new CommonApplicationValidationException("Imposssible d'effectuer l'action: utilisateur non reconnu");
+ }
+ try {
+ if (!CommonTools.validerMotDePasse(editPasswordDto.getActualPassword(), user.getPwd())) {
+ throw new CommonApplicationValidationException("Le mot de passe actuel est incorrect");
+ }
+ } catch (NoSuchAlgorithmException | InvalidKeySpecException ex) {
+ throw new CommonApplicationValidationException("Impossible d'effectuer l'opération une erreur interne du serveur s'est produite");
+ }
+ validerMotDePasseModifier(true, editPasswordDto.getNewPassword(), user);
+ user.setPwd(CommonTools.encryptPassword(editPasswordDto.getNewPassword()));
+ update(user.getId(), user);
+ }
+
+ @Override
+ public List<String> validerParametresConnexion(String username, String password) {
+
+ //Variables
+ List<String> errors = new ArrayList<>();
+ User user = recuperUtilisateur(username, password);
+
+ //Si null
+ if (user == null) {
+
+ //On recupère l'utilisateur via son login
+ user = recuperUtilisateur(username);
+
+ //Si non null et non administrateurs
+ if (user != null && !(user.getRole().getAdmin() || user.getRole().getMegaAdmin() || user.getRole().getSuperAdmin())) {
+
+ //Si le nombre de tentatives est depassé
+ if (user.getAttemps() >= user.getAttempsNumber()) {
+
+ //Si compte pas encore verrouillé
+ if (!user.isLocked()) {
+
+ //On verrouille le compte
+ user.setLocked(true);
+
+ }
+
+ //On met à jour
+ update(user.getId(), user);
+
+ //On lève l'exeption
+ errors.add("Suite à l'echec des " + user.getAttempsNumber() + " tentative(s) de connexions à ce compte, ce dernier a été verrouillé. "
+ + "\n Veuillez contacter l'administrateur.");
+
+ } else {
+
+ //On comptabilise le nombre de tentatives
+ user.setAttemps(user.getAttemps() + 1);
+
+ //On met à jour
+ update(user.getId(), user);
+
+ //Si nbre tentatives > 0
+ if ((user.getAttempsNumber() - user.getAttemps()) > 0) {
+
+ //On lève l'exeption
+ errors.add("Login ou mot de passe incorrect, Il vous reste (" + ((user.getAttempsNumber() - user.getAttemps())) + ") tentative(s)");
+
+ } else {
+
+ //Si compte pas encore verrouillé
+ if (!user.isLocked()) {
+
+ //On verrouille le compte
+ user.setLocked(true);
+
+ }
+
+ //On met à jour
+ update(user.getId(), user);
+
+ //On lève l'exeption
+ errors.add("Suite à l'echec des " + user.getAttempsNumber() + " tentative(s) de connexions à ce compte, ce dernier a été verrouillé. "
+ + "\n Veuillez contacter l'administrateur.");
+
+ }
+
+ }
+
+ } else {
+
+ //On lève l'exeption
+ errors.add("Login ou mot de passe incorrect.");
+
+ }
+
+ } else {
+
+ //Ces controles ne concernent pas les administrateurs par defauts
+ if (!(user.getRole().getAdmin() || user.getRole().getMegaAdmin() || user.getRole().getSuperAdmin())) {
+
+ if (user.getEtatOperation() != EtatOperation.ACTIF) { //Si compte non actif
+
+ //On lève l'exeption
+ errors.add("Compte non activé.\n Veuillez contacter l'administrateur.");
+
+ } else if (user.isLocked()) { //Si compte verrouillé
+
+ //On lève l'exeption
+ errors.add("Compte verrouillé.\n Veuillez contacter l'administrateur.");
+
+ }
+
+ //On calcule le nbre de jour restant avant expiration du mot de passe
+ calculerNbreJoursAvantExpirationMotDePasse(user);
+
+ //On verifie si le mot de passe a expiré
+ checkerExpirationMotDePasse(user);
+
+ //On reset le nombre de tentatives
+ user.setAttemps(0);
+
+ //On met à jour
+ update(user.getId(), user);
+
+ } else {
+
+ //On calcule le nbre de jour restant avant expiration du mot de passe
+ calculerNbreJoursAvantExpirationMotDePasse(user);
+
+ //On verifie si le mot de passe a expiré
+ checkerExpirationMotDePasse(user);
+
+ //On met à jour
+ update(user.getId(), user);
+
+ }
+
+ }
+
+ return errors;
+ }
+
+ /**
+ * Permet de determiner si la delai d'expiration mot de passe est arrivé
+ *
+ * @param user
+ */
+ public void checkerExpirationMotDePasse(User user) {
+
+ //Si mot de passe expiré
+ if (siDelaiExpirationArrive(user)) {
+
+ //On ajoute à la pile des messages système
+ messageSystemeManager.ajouter(TypeMessageSysteme.AVERTISSEMENT, TypeIdMessageSysteme.MOT_DE_PASSE_EXPIRE, "Votre mot de passe a expiré, veuillez le modifier.", user);
+
+ }
+
+ }
+
+ /**
+ * Permet de determiner si la delai expiration mot de passe arrivé
+ *
+ * @param user
+ */
+ public boolean siDelaiExpirationArrive(User user) {
+
+ //Variables
+ Date dateFuturExpirationMotDePasse = null;
+ Date dateCourante = new Date();
+
+ //Si egal à zero (n'expire jamais)
+ if (user.getExpirationDelay() == 0) {
+ return false;
+ } else {
+
+ //On calcule la date d'expiration
+ dateFuturExpirationMotDePasse = CommonTools.addDay(user.getDateDerniereModificationMotDePasse(), user.getExpirationDelay());
+
+ //On compare si la date courante est supérieur ou égale à la date d'expiration
+ if (dateCourante.getTime() >= dateFuturExpirationMotDePasse.getTime()) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ }
+
+ /**
+ * Cette methode permet de calculer le nombre de jours avant expiration du
+ * mot de passe
+ *
+ * @param utilisateur
+ */
+ private void calculerNbreJoursAvantExpirationMotDePasse(User utilisateur) {
+
+ //Variables
+ Date dateFuturExpirationMotDePasse = null;
+ Date dateCourante = new Date();
+ long difference = 0l;
+ Integer nbreJoursRestant = 0;
+ String message = "";
+
+ //Si egal à zero (n'expire jamais)
+ if (utilisateur.getExpirationDelay() > 0) {
+
+ //On calcule la date d'expiration
+ dateFuturExpirationMotDePasse = CommonTools.addDay(utilisateur.getDateDerniereModificationMotDePasse(), utilisateur.getExpirationDelay());
+
+ //On compare si la date courante est inferieur ou egale à la date d'expiration
+ if (dateCourante.getTime() < dateFuturExpirationMotDePasse.getTime()) {
+
+ //On calcule la difference en milli seconde
+ difference = dateFuturExpirationMotDePasse.getTime() - dateCourante.getTime();
+
+ //On recupere le nombre de jours restant avant expiration
+ nbreJoursRestant = new BigDecimal(TimeUnit.DAYS.convert(difference, TimeUnit.MILLISECONDS)).intValue();
+
+ //Si le nbre jours restant est inferieur ou egal au seuil d'alerte
+ if (nbreJoursRestant <= utilisateur.getAlertDelay()) {
+
+ //Si nbre jour == 0,
+ switch (nbreJoursRestant) {
+ case 0:
+ //On recupere le message
+ message = "Votre mot de passe expire aujourd'hui, pensez à le modifier";
+ break;
+ case 1:
+ //On recupere le message
+ message = "Votre mot de passe expire demain, pensez à le modifier";
+ break;
+ default:
+ //On recupere le message
+ message = "Votre mot de passe expire dans (" + CommonTools.formaterChiffreAvecZeroDevant(nbreJoursRestant) + ") jour(s), \n Pensez à le modifier.";
+ break;
+ }
+
+ //On ajoute à la pile des messages système
+ messageSystemeManager.ajouter(TypeMessageSysteme.AVERTISSEMENT, TypeIdMessageSysteme.ALERTE_MOT_DE_PASSE_EXPIRE, message, utilisateur);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ @Override
+ public List<User> obtenirListeUtilisateursRole(Role role) {
+ return dao.obtenirListeUtilisateursRole(role);
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<User, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(UserSearch searchEntity, TypeOperation typeOperation) {
+ RestrictionsContainer requeteur = RestrictionContainerBuildeUtil.construireRequete(searchEntity, UserSearch.class);
+ requeteur.addEq("typeOperation", typeOperation);
+ return requeteur;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertDataMessageToTransfert.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertDataMessageToTransfert.java
new file mode 100644
index 0000000..be0f56b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertDataMessageToTransfert.java
@@ -0,0 +1,100 @@
+package com.megatim.fdxconsultation.core.impl.api.supervision;
+
+import static com.fdx.messaging.common.Etat.ATTENTE_ROUTAGE;
+import static com.fdx.messaging.common.Etat.ECHEC_CONTENU;
+import static com.fdx.messaging.common.Etat.ECHEC_EMPREINTE;
+import static com.fdx.messaging.common.Etat.ECHEC_NOMENCLATURE;
+import static com.fdx.messaging.common.Etat.ECHOUE;
+import static com.fdx.messaging.common.Etat.EN_ATTENTE;
+import static com.fdx.messaging.common.Etat.EN_ATTENTE_INTEGRATION;
+import static com.fdx.messaging.common.Etat.EN_ATTENTE_PREPARATION;
+import static com.fdx.messaging.common.Etat.EN_ATTENTE_RECEPTION_EMPREINTE;
+import static com.fdx.messaging.common.Etat.EN_ATTENTE_VALIDATION_EMPREINTE;
+import static com.fdx.messaging.common.Etat.EN_COURS;
+import static com.fdx.messaging.common.Etat.EN_COURS_DE_PREPARATION;
+import static com.fdx.messaging.common.Etat.FILE_EXCEPTION;
+import static com.fdx.messaging.common.Etat.FILE_NOT_FOUND;
+import static com.fdx.messaging.common.Etat.TERMINE;
+import static com.fdx.messaging.common.Sens.ENVOI;
+import static com.fdx.messaging.common.Sens.RECEPTION;
+import com.fdx.messaging.common.TransfertDataMessage;
+import com.megatim.fdxconsultation.model.supervision.EtatTransfert;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TransfertDataMessageToTransfert {
+
+ private final TransfertDataMessage transfertDataMessage;
+
+ public TransfertDataMessageToTransfert(TransfertDataMessage transfertDataMessage) {
+ this.transfertDataMessage = transfertDataMessage;
+ }
+
+ public Transfert transfert() {
+ return new Transfert(
+ transfertDataMessage.getCodeAgent(),
+ transfertDataMessage.getCodeAgentRecepteur(),
+ getSensTransfert(),
+ getEtatTransfert(),
+ transfertDataMessage.getNomFichier(),
+ transfertDataMessage.getTypeFichier(),
+ transfertDataMessage.getTaille(),
+ transfertDataMessage.getSended(),
+ transfertDataMessage.getDateCreation(),
+ transfertDataMessage.getDateDebut(),
+ transfertDataMessage.getDateFin()
+ );
+ }
+
+ private SensTransfert getSensTransfert() {
+ switch (transfertDataMessage.getSens()) {
+ case ENVOI:
+ return SensTransfert.ENVOI;
+ case RECEPTION:
+ return SensTransfert.RECEPTION;
+ default:
+ return null;
+ }
+ }
+
+ private EtatTransfert getEtatTransfert() {
+ switch (transfertDataMessage.getEtat()) {
+ case ATTENTE_ROUTAGE:
+ return EtatTransfert.ATTENTE_ROUTAGE;
+ case ECHEC_CONTENU:
+ return EtatTransfert.ECHEC_CONTENU;
+ case ECHEC_EMPREINTE:
+ return EtatTransfert.ECHEC_EMPREINTE;
+ case ECHEC_NOMENCLATURE:
+ return EtatTransfert.ECHEC_NOMENCLATURE;
+ case ECHOUE:
+ return EtatTransfert.ECHOUE;
+ case EN_ATTENTE:
+ return EtatTransfert.EN_ATTENTE;
+ case EN_ATTENTE_INTEGRATION:
+ return EtatTransfert.EN_ATTENTE_INTEGRATION;
+ case EN_ATTENTE_PREPARATION:
+ return EtatTransfert.EN_ATTENTE_PREPARATION;
+ case EN_ATTENTE_RECEPTION_EMPREINTE:
+ return EtatTransfert.EN_ATTENTE_RECEPTION_EMPREINTE;
+ case EN_ATTENTE_VALIDATION_EMPREINTE:
+ return EtatTransfert.EN_ATTENTE_VALIDATION_EMPREINTE;
+ case EN_COURS:
+ return EtatTransfert.EN_COURS;
+ case EN_COURS_DE_PREPARATION:
+ return EtatTransfert.EN_COURS_DE_PREPARATION;
+ case FILE_EXCEPTION:
+ return EtatTransfert.FILE_EXCEPTION;
+ case FILE_NOT_FOUND:
+ return EtatTransfert.FILE_NOT_FOUND;
+ case TERMINE:
+ return EtatTransfert.TERMINE;
+ default:
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertManagerImpl.java
new file mode 100644
index 0000000..972cb41
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/supervision/TransfertManagerImpl.java
@@ -0,0 +1,133 @@
+package com.megatim.fdxconsultation.core.impl.api.supervision;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.fdx.messaging.common.TransfertDataMessage;
+import com.megatim.fdxconsultation.core.ifaces.supervision.TransfertManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.supervision.TransfertDAO;
+import com.megatim.fdxconsultation.dao.impl.supervision.TransfertMessageKey;
+import com.megatim.fdxconsultation.model.searchentities.TransfertSearch;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardRequest;
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardResponse;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.enterprise.context.ApplicationScoped;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class TransfertManagerImpl extends AbstractGenericManager<Transfert, Long> implements TransfertManager {
+
+ @EJB
+ private TransfertDAO dao;
+
+ private final Map<String, Transfert> transfertMap = new ConcurrentHashMap<>();
+
+ @PostConstruct
+ public void init() {
+ findAll().forEach(t -> {
+ String key = new TransfertMessageKey(t).key();
+ transfertMap.put(key, t);
+ });
+ }
+
+ @Override
+ public GenericDAO<Transfert, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public PaginationWithSearchEnityDAO<Transfert, Long, TransfertSearch> getPaginationDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Transfert persistTransfert(Transfert t) {
+
+ String key = new TransfertMessageKey(t).key();
+ Transfert transfert = transfertMap.get(key);
+
+ if (transfert == null) {
+
+ transfertMap.put(key, save(t));
+
+ } else if (!transfert.getEtatTransfert().equals(t.getEtatTransfert())) {
+
+ setFields(transfert, t);
+ transfertMap.put(key, update(transfert.getId(), transfert));
+
+ }
+
+ return transfertMap.get(key);
+ }
+
+ @Override
+ public StandaloneDashboardResponse standaloneDashboardResponse(StandaloneDashboardRequest standaloneDashboardRequest) {
+
+ LocalDateTime dateDebut = standaloneDashboardRequest.getDateDebut();
+ LocalDateTime dateFin
+ = (standaloneDashboardRequest.getDateFin() != null)
+ ? standaloneDashboardRequest.getDateFin().toLocalDate().atTime(LocalTime.MAX)
+ : null;
+ SensTransfert sens = standaloneDashboardRequest.getSens();
+
+ StandaloneDashboardResponse response = new StandaloneDashboardResponse();
+
+ response.setNombreTypeFichier(dao.getNombreTypeFichier(sens, dateDebut, dateFin));
+ response.setTailleTotale(dao.getTailleTotale(sens, dateDebut, dateFin));
+ response.setTotalTransfert(dao.getTotalTransfert(sens, dateDebut, dateFin));
+ response.setTotalTransfertAutomatique(dao.getTransfertsAutomatique(sens, dateDebut, dateFin));
+ response.setTotalTransfertEchec(dao.getTransfertsEchec(sens, dateDebut, dateFin));
+ response.setTotalTransfertManuel(dao.getTransfertsManuel(sens, dateDebut, dateFin));
+ response.setTransfertAttente(dao.getTransfertsAttente(sens, dateDebut, dateFin));
+ response.setTransfertReussie(dao.getTransfertsReussie(sens, dateDebut, dateFin));
+ response.setVitesseMoyenne(dao.getVitesseMoyenne(sens, dateDebut, dateFin));
+
+ if (response.getTotalTransfert() > 0) {
+ response.setTailleMoyenne(response.getTailleTotale() / response.getTotalTransfert());
+ } else {
+ response.setTailleMoyenne(0);
+ }
+
+ return response;
+
+ }
+
+ @Override
+ public List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+ List<Transfert> transferts = dao.filter(supervisionFilterModalFormRequest);
+ transferts.sort((t1, t2) -> Long.compare(t2.getId(), t1.getId()));
+ return transferts;
+ }
+
+ private void setFields(Transfert transfert, Transfert t) {
+
+ transfert.setCodeAgent(t.getCodeAgent());
+ transfert.setCodeAgentRecepteur(t.getCodeAgentRecepteur());
+ transfert.setEtatTransfert(t.getEtatTransfert());
+ transfert.setSensTransfert(t.getSensTransfert());
+ transfert.setDateDebut(t.getDateDebut());
+ transfert.setDateFin(t.getDateFin());
+ transfert.setNomFichier(t.getNomFichier());
+ transfert.setSended(t.getSended());
+ transfert.setTaille(t.getTaille());
+ transfert.setTypeFichier(t.getTypeFichier());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java
new file mode 100644
index 0000000..78f22fb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/api/token/ApiTokenManagerImpl.java
@@ -0,0 +1,232 @@
+package com.megatim.fdxconsultation.core.impl.api.token;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.google.common.hash.Hashing;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.jms.messages.ApiTokenMessage;
+import com.megatim.fdxcommons.model.jms.messages.ApiTokenMessageType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.api.token.ApiTokenManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.api.token.ApiTokenDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.reporting.model.api.token.ApiTokenReporting;
+import com.megatim.fdxconsultation.model.api.token.ApiTokenStatut;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.ApiTokenSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.service.AuthenticationTokenService;
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.CdiCamelContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ApiTokenManagerImpl extends AbstractGenericManager<ApiToken, Long> implements ApiTokenManager {
+
+ @EJB
+ private ApiTokenDAO dao;
+
+ @Inject
+ private AuthenticationTokenService authenticationTokenService;
+
+ @Inject
+ private CdiCamelContext camelContext;
+
+ @Inject
+ private MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public GenericDAO<ApiToken, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String addAndGetToken(ApiToken apiToken, User connectedUser) {
+ if (dao.getByCodeParticipant(apiToken.getParticipant()) != null) {
+ throw new CommonApplicationValidationException("Le participant sélectionné possède déjà un mot de passe généré.");
+ }
+
+ String token = authenticationTokenService.issueToken(apiToken.getParticipant().getCode());
+ apiToken.setToken(Hashing.sha256().hashString(token, StandardCharsets.UTF_8).toString());
+
+ apiToken.setDateCreation(new Date());
+ apiToken.setTypeOperation(TypeOperation.AJOUTER);
+ apiToken.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+ save(apiToken);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setToken(apiToken.getToken());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.ADD);
+ sendMessage(apiTokenMessage);
+
+ return token;
+ }
+
+ @Transactional
+ @Override
+ public String updateAndGetToken(Long id, ApiToken apiToken, User connectedUser) {
+ ApiToken entityFromDB = find(getEntityIdName(),id);
+
+ //On génère le token
+ String token = authenticationTokenService.issueToken(entityFromDB.getParticipant().getCode());
+ entityFromDB.setToken(Hashing.sha256().hashString(token, StandardCharsets.UTF_8).toString());
+
+ entityFromDB.setDateDerniereModification(new Date());
+ entityFromDB.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+
+ save(entityFromDB);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(entityFromDB.getParticipant().getCode());
+ apiTokenMessage.setToken(entityFromDB.getToken());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.UPDATE);
+ sendMessage(apiTokenMessage);
+
+ return token;
+ }
+
+ private void sendMessage(ApiTokenMessage apiTokenMessage) {
+ ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+ producerTemplate.sendBody("direct:" + AppCommonContext.TOKEN_GENERATION_DIRECT, apiTokenMessage);
+ }
+
+ @Override
+ public ApiToken lock(Long id, User connectedUser) {
+ ApiToken apiToken = find(getEntityIdName(),id);
+ apiToken.setApiTokenStatut(ApiTokenStatut.LOCKED);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.LOCKED);
+
+ //Envoi du message à l'API Web
+ sendMessage(apiTokenMessage);
+
+ return update(id, apiToken);
+ }
+
+ @Override
+ public ApiToken unLock(Long id, User connectedUser) {
+ ApiToken apiToken = find(getEntityIdName(),id);
+ apiToken.setApiTokenStatut(ApiTokenStatut.UNLOCKED);
+
+ //Création de l'objet JMS à envoyer à l'API pour l'enregistrement du Token
+ ApiTokenMessage apiTokenMessage = new ApiTokenMessage();
+ apiTokenMessage.setCodeParticipant(apiToken.getParticipant().getCode());
+ apiTokenMessage.setApiTokenMessageType(ApiTokenMessageType.UNLOCKED);
+
+ //Envoi du message à l'API Web
+ sendMessage(apiTokenMessage);
+
+ return update(id, apiToken);
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false );
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<ApiTokenReporting> getClazz() {
+ return ApiTokenReporting.class;
+ }
+
+ @Override
+ public List<ApiTokenReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToApiTokenReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList(new OrderByDefinition(getEntityIdName(), OrderByType.DESC))));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<ApiToken, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ @Override
+ public void beforeAdd(ApiToken entity, User connectedUser) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public void beforeRemove(ApiToken entity, User connectedUser) {
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+ entity.setDateSuppression(new Date());
+ entity.setUtilisateurSuppression(connectedUser.getUserName());
+ }
+
+ @Override
+ public void beforeModify(ApiToken actualEntity, ApiToken requestEntity, User connectedUser) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public ApiTokenDto mapToDto(ApiToken entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public ApiTokenDto mapToDetailDto(ApiToken entity) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(ApiTokenSearch searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/CustomCamelContext.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/CustomCamelContext.java
new file mode 100644
index 0000000..809700a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/CustomCamelContext.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxconsultation.core.impl.camel;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.ApplicationScoped;
+import org.apache.camel.impl.DefaultCamelContext;
+
+/**
+ *
+ * @author Gabuntu
+ */
+//@ApplicationScoped
+public class CustomCamelContext {
+
+ @PostConstruct
+ public void init() {
+
+ //setAutoStartup(Boolean.FALSE);
+
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+
+ System.out.println("STARTING CAMEL CONTEXT");
+
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+
+ //camelContext.start();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/helper/FileInsertionProcess.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/helper/FileInsertionProcess.java
new file mode 100644
index 0000000..468b7a2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/camel/helper/FileInsertionProcess.java
@@ -0,0 +1,331 @@
+package com.megatim.fdxconsultation.core.impl.camel.helper;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.exceptions.BadDataValueException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.queries.CustomQueries;
+import com.megatim.fdxcommons.tools.database.queries.InsertDataProductionInDataProductionToDeleteQuery;
+import com.megatim.fdxcommons.tools.database.queries.UpdateDataProductionQuery;
+import com.megatim.fdxcommons.tools.database.queries.metadata.InsertionLocalDateTimeValue;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumnData;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.FdxConsultationIndexColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.metadata.ProductionMetaDataManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableInsert;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigDecimal;
+import java.nio.charset.Charset;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.naming.NamingException;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class FileInsertionProcess {
+
+ private final ColumnDefinitionManager columnDefinitionManager;
+ private final CommonDataProduction dataProduction;
+ private final Connection connection;
+ private final File dataFile;
+ private final int BATCH_SIZE = 100_000;
+ private final Charset charset;
+ private final TableInsert tableInsert;
+ private final ProductionMetaDataManager metaDataManager;
+
+ public FileInsertionProcess(ColumnDefinitionManager columnDefinitionManager, CommonDataProduction dataProduction, Connection connection, File dataFile, Charset charset, TableInsert tableInsert, ProductionMetaDataManager metaDataManager) {
+ this.columnDefinitionManager = columnDefinitionManager;
+ this.dataProduction = dataProduction;
+ this.connection = connection;
+ this.dataFile = dataFile;
+ this.charset = charset;
+ this.tableInsert = tableInsert;
+ this.metaDataManager = metaDataManager;
+ }
+
+ public void process() throws IOException, SQLException, NamingException, Exception {
+ System.out.println("--------------------In FileInsertionProcess-----------------");
+ ProductionMetaData metaData = metaDataManager.getById(dataProduction.getId());
+
+ if (metaData != null) {
+ TableDefinition tableDefinition = tableDefinition(dataProduction.getCodeTypeFichier(), dataProduction.getReferentielVersion());
+
+ if (metaData.getDataProductionType().equals(DataProductionType.UPDATE.toString())) {
+ List<Long> indexes = new CustomQueries().indexes(metaData.getProductionId(), connection);
+
+ if (!indexes.isEmpty()) {
+ if (tableDefinition.getHeaderPresent() != null && tableDefinition.getColumnDelimiter() != null && tableDefinition.getLineDelimiter() != null) {
+ insertDataFromCsvFileToDatabase(metaData, indexes, tableDefinition);
+ } else {
+ insertDataFromFileToDatabase(metaData, indexes, tableDefinition.getColumnDefinitions());
+ }
+ dataProduction.setStatutDataProduction(StatutDataProduction.A_CONSOMMER);
+ new UpdateDataProductionQuery(dataProduction, connection).execute();
+ } else {
+ dataProduction.setStatutDataProduction(StatutDataProduction.CONSOMME);
+ new UpdateDataProductionQuery(dataProduction, connection).execute();
+ }
+ } else if (metaData.getDataProductionType().equals(DataProductionType.ADD.toString())) {
+ System.out.println("-----------------In DataProductionType.ADD--------------------");
+ if (tableDefinition.getHeaderPresent() != null && tableDefinition.getColumnDelimiter() != null && tableDefinition.getLineDelimiter() != null) {
+ insertDataFromCsvFileToDatabase(metaData, null, tableDefinition);
+ } else {
+ insertDataFromFileToDatabase(metaData, null, tableDefinition.getColumnDefinitions());
+ }
+ dataProduction.setStatutDataProduction(StatutDataProduction.A_CONSOMMER);
+ new UpdateDataProductionQuery(dataProduction, connection).execute();
+
+ FdxConsultationTable consTable = FdxConsultationTableFactory.createTable(dataProduction.getCodeTypeFichier(), dataProduction.getReferentielVersion(), connection);
+
+ if (consTable.tableDefinition(connection).isReferentiel()) {
+ if (dataProduction.getId() != null) {
+ new InsertDataProductionInDataProductionToDeleteQuery(connection, dataProduction.getId()).execute();
+ }
+ }
+ }
+ } else {
+ dataProduction.setStatutDataProduction(StatutDataProduction.CONSOMME);
+ new UpdateDataProductionQuery(dataProduction, connection).execute();
+ }
+
+ }
+
+ private void insertDataFromFileToDatabase(ProductionMetaData metaData, List<Long> indexes, List<ColumnDefinition> columnDefinitions) throws BadDataValueException, Exception, IOException {
+ List<FdxTableRow> data = new ArrayList<>(BATCH_SIZE);
+ List<FdxTableColumnData> appColumns = appColumns();
+ final int lineLength = columnDefinitions.stream().map(c -> c.getTaille()).reduce(0, Integer::sum);
+ int lineNumber = 1;
+ String line;
+ final Long startIndex = metaData.getStartIndex();
+ int index = lineNumber - 1;
+ Long fdxIndex = metaData.getDataProductionType().equals(DataProductionType.ADD.toString()) ? startIndex : indexes.get(index);
+
+ System.out.println("------------------startIndex = " + startIndex + ", nbreElts = " + metaData.getNbreElts());
+
+ try ( FileInputStream fis = new FileInputStream(dataFile); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) {
+ while ((line = reader.readLine()) != null) {
+
+ if (line.trim().isEmpty() || line.length() != lineLength) {
+ throw new BadDataValueException("La taille de la ligne " + lineNumber + " est différente de la taille attendue");
+ }
+ data.add(getLine(line, lineNumber, columnDefinitions, appColumns, fdxIndex));
+
+ if ((lineNumber % BATCH_SIZE) == 0) {
+ insert(data);
+ }
+
+ lineNumber++;
+ index = lineNumber - 1;
+ fdxIndex = metaData.getDataProductionType().equals(DataProductionType.ADD.toString()) ? startIndex + index : indexes.get(index);
+ }
+
+ dataProduction.setStatutDataProduction(StatutDataProduction.A_CONSOMMER);
+ insert(data);
+ }
+ System.out.println("-----------LastIndex = " + fdxIndex);
+ }
+
+ private int insertDataFromCsvFileToDatabase(ProductionMetaData metaData, List<Long> indexes, TableDefinition tableDefinition) throws BadDataValueException, Exception, IOException {
+ List<FdxTableRow> data = new ArrayList<>(BATCH_SIZE);
+ List<FdxTableColumnData> appColumns = appColumns();
+ int lineNumber = 1;
+ final Long startIndex = metaData.getStartIndex();
+ int index = lineNumber - 1;
+ Long fdxIndex = metaData.getDataProductionType().equals(DataProductionType.ADD.toString()) ? startIndex : indexes.get(index);
+
+ try ( FileInputStream fis = new FileInputStream(dataFile); InputStreamReader isr = new InputStreamReader(fis, charset); BufferedReader reader = new BufferedReader(isr)) {
+ List<ColumnDefinition> columnDefinitions = tableDefinition.getColumnDefinitions();
+ AtomicBoolean withHeader = new AtomicBoolean(tableDefinition.getHeaderPresent());
+
+ CSVParser parser = new CSVParser(reader,
+ CSVFormat.DEFAULT.builder()
+ .setSkipHeaderRecord(withHeader.get())
+ .setIgnoreSurroundingSpaces(true)
+ .setTrim(true)
+ .setDelimiter(StringEscapeUtils.unescapeJava(tableDefinition.getColumnDelimiter()))
+ .setRecordSeparator(StringEscapeUtils.unescapeJava(tableDefinition.getLineDelimiter()))
+ .build());
+ List<CSVRecord> records = parser.getRecords();
+
+ for (CSVRecord record : records) {
+
+ String[] columnsTableLine = new String[record.size()];
+ AtomicInteger i = new AtomicInteger(0);
+
+ if (!withHeader.get()) {
+ record.forEach(column -> {
+ columnsTableLine[i.getAndIncrement()] = column != null ? column.replaceAll(" {2,}", " ").replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "") : "";
+ });
+ if (columnsTableLine.length != columnDefinitions.size()) {
+ throw new Exception("Le nombre de colonnes de la ligne " + lineNumber + " est différent du nombre de colonnes attendu");
+ }
+ data.add(getLine(columnsTableLine, lineNumber, columnDefinitions, appColumns, fdxIndex));
+
+ if ((lineNumber % BATCH_SIZE) == 0) {
+ insert(data);
+ }
+ lineNumber++;
+ } else {
+ withHeader.set(false);
+ }
+ index = lineNumber - 1;
+ fdxIndex = metaData.getDataProductionType().equals(DataProductionType.ADD.toString()) ? startIndex + index : indexes.get(index);
+ }
+ }
+
+ if (!data.isEmpty()) {
+ insert(data);
+ }
+ return lineNumber - 1;
+ }
+
+ private void insert(List<FdxTableRow> data) throws Exception {
+ tableInsert.insert(dataProduction, data, connection);
+ data.clear();
+ }
+
+ private TableDefinition tableDefinition(String codeTypeFichier, String referentielVersion) throws SQLException, NamingException {
+ FdxConsultationTable consTable = FdxConsultationTableFactory.createTable(codeTypeFichier, referentielVersion, connection);
+ return consTable.tableDefinition(connection).tableDefinition();
+ }
+
+ private FdxTableRow getLine(final String line, final int lineNumber, final List<ColumnDefinition> columnsDefinition, List<FdxTableColumnData> appColumns, Long fdxIndex) throws BadDataValueException, LocalDateTimeValueParseError {
+ int index = 0;
+ List<FdxTableColumnData> dataColumns = new ArrayList<>();
+
+ for (ColumnDefinition c : columnsDefinition) {
+ //traitement des colonnes du type fichier
+ String data = line.substring(index, index + c.getTaille());
+ FdxTableColumnData columnData = new FdxTableColumnData(parse(c, data), c.getName(), c.getPosition());
+ dataColumns.add(columnData);
+ index += c.getTaille();
+ }
+ dataColumns.addAll(appColumns);
+ dataColumns.add(new FdxTableColumnData(fdxIndex, new FdxConsultationIndexColumnDefinition().name(), 0));
+
+ return new FdxTableRow(lineNumber, dataColumns);
+ }
+
+ private FdxTableRow getLine(String[] columnsTableLine, final int lineNumber, final List<ColumnDefinition> columnsDefinition, List<FdxTableColumnData> appColumns, Long fdxIndex) throws BadDataValueException, LocalDateTimeValueParseError {
+ List<FdxTableColumnData> dataColumns = new ArrayList<>();
+
+ for (ColumnDefinition c : columnsDefinition) {
+ //traitement des colonnes du type fichier
+ String data = columnsTableLine[c.getPosition() - 1];
+ FdxTableColumnData columnData = new FdxTableColumnData(parse(c, data), c.getName(), c.getPosition());
+ dataColumns.add(columnData);
+ }
+ dataColumns.addAll(appColumns);
+ dataColumns.add(new FdxTableColumnData(fdxIndex, new FdxConsultationIndexColumnDefinition().name(), 0));
+
+ return new FdxTableRow(lineNumber, dataColumns);
+ }
+
+ private List<FdxTableColumnData> appColumns() {
+ List<FdxTableColumnData> dataColumns = new ArrayList<>();
+
+ if (dataProduction.getDataProductionType().equals(DataProductionType.UPDATE)) {
+ dataColumns.add(new FdxTableColumnData(dataProduction.getDateMiseAJour(), new DateMiseAJourColumnDefinition().name(), 0));
+ dataColumns.add(new FdxTableColumnData(dataProduction.getId(), new DataProductionUpdateIdColumnDefinition().name(), 0));
+
+ } else if (dataProduction.getDataProductionType().equals(DataProductionType.ADD)) {
+ dataColumns.add(new FdxTableColumnData(dataProduction.getId(), new DataProductionIdColumnDefinition().name(), 0));
+ }
+ dataColumns.add(new FdxTableColumnData(dataProduction.getDateProduction(), new DateCreationColumnDefinition().name(), 0));
+ return dataColumns;
+ }
+
+ private Object parse(ColumnDefinition columnDefinition, String value) throws BadDataValueException, LocalDateTimeValueParseError {
+
+ String columnType = columnDefinition.getTypeDonnee();
+
+ if (columnType.equals(TypeDonnee.ALPHANUMERIQUE.toString()) && (value == null
+ || (value instanceof String && lengthLowerOrEquals(((String) value).trim(), columnDefinition.getTaille())))) {
+
+ return value != null ? value.trim() : value;
+
+ } else if (columnType.equals(TypeDonnee.NUMERIQUE.toString())) {
+
+ if (value == null || value.trim().isEmpty()) {
+ return null;
+ }
+
+ String stringValue = value.trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isLong(stringValue)) {
+ return Long.valueOf(stringValue);
+ }
+
+ } else if (columnType.equals(TypeDonnee.DECIMAL.toString())) {
+
+ if (value == null || value.trim().isEmpty()) {
+ return null;
+ }
+ String stringValue = value
+ .trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+
+ if (lengthLowerOrEquals(stringValue, columnDefinition.getTaille() + columnDefinition.getTaillePartieDecimale() + 1)) {
+ try {
+ return new BigDecimal(stringValue);
+ } catch (Exception ex) {
+ }
+ }
+
+ } else if (columnType.equals(TypeDonnee.DATE.toString())) {
+
+ if (value == null || value.trim().isEmpty()) {
+ return null;
+ }
+ String stringValue = value.trim()
+ .replaceAll("\\s+", "")
+ .replaceAll("\\u00A0", "")//nbsp
+ .replaceAll(" ", "");
+
+ if (lengthEquals(stringValue, columnDefinition.getTaille()) && GenericValidator.isDate(stringValue, columnDefinition.getFormatDate(), true)) {
+ return new InsertionLocalDateTimeValue(columnDefinition.getFormatDate(), value).value();
+ }
+ }
+
+ throw new BadDataValueException("La valeur " + value + " ne correspond pas au format attendu pour la colonne " + columnDefinition.getName());
+ }
+
+ private boolean lengthEquals(String value, int columnMaxLength) {
+ return value.trim().length() == columnMaxLength;
+ }
+
+ private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+ return value.trim().length() <= columnMaxLength;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/configuration/CodeStatutHttpManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/configuration/CodeStatutHttpManagerImpl.java
new file mode 100644
index 0000000..57629cc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/configuration/CodeStatutHttpManagerImpl.java
@@ -0,0 +1,186 @@
+package com.megatim.fdxconsultation.core.impl.configuration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.administration.HistoriqueMotDePasseManager;
+import com.megatim.fdxconsultation.core.ifaces.configuration.CodeStatutHttpManager;
+import com.megatim.fdxconsultation.core.ifaces.message.systeme.MessageSystemeManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.configuration.CodeStatutHttpDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import com.megatim.fdxconsultation.reporting.model.configuration.CodeStatutHttpReporting;
+import com.megatim.fdxconsultation.model.dto.CodeStatutHttpDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.CodeStatutHttpSearch;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class CodeStatutHttpManagerImpl extends AbstractGenericManager<CodeStatutHttp, Long> implements CodeStatutHttpManager {
+
+ @Inject
+ protected CodeStatutHttpDAO dao;
+
+ @Inject
+ protected HistoriqueMotDePasseManager historiqueMotDePasseManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ private MessageSystemeManager messageSystemeManager;
+
+ /**
+ *
+ */
+ public CodeStatutHttpManagerImpl() {
+ }
+
+ @Override
+ public GenericDAO<CodeStatutHttp, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public CodeStatutHttpDto getById(Long id) {
+ return mapToDetailDto(find(getEntityIdName(), id));
+ }
+
+ @Override
+ @Transactional
+ public CodeStatutHttp modify(Long id, CodeStatutHttp entity, User connectedUser) {
+ CodeStatutHttp actualEntity = find(getEntityIdName(), id);
+ beforeModify(actualEntity, entity, connectedUser);
+ update(id, actualEntity);
+ return actualEntity;
+ }
+
+ @Override
+ public CodeStatutHttpDto mapToDto(CodeStatutHttp entity) {
+ return mapstructMapper.codeStatutHttpToCodeStatutHttpDto(entity);
+ }
+
+ @Override
+ public CodeStatutHttpDto mapToDetailDto(CodeStatutHttp entity) {
+ return mapstructMapper.codeStatutHttpToCodeStatutHttpDto(entity);
+ }
+
+ @Override
+ public void beforeModify(CodeStatutHttp actualEntity, CodeStatutHttp requestEntity, User utilisateurConnecte) {
+ if (actualEntity == null) {
+ throw new CommonRessourceNotFoundException(CodeStatutHttp.class);
+ }
+ actualEntity.setDateDerniereModification(new Date());
+ if (utilisateurConnecte != null) {
+ actualEntity.setUtilisateurModification(utilisateurConnecte.getUserName());
+ }
+ actualEntity.setCode(requestEntity.getCode());
+ actualEntity.setLibelle(requestEntity.getLibelle());
+ }
+
+ @Override
+ public void beforeRemove(CodeStatutHttp entity, User utilisateurConnecte) {
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+ entity.setDateSuppression(new Date());
+ if (utilisateurConnecte != null) {
+ entity.setUtilisateurSuppression(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public void beforeAdd(CodeStatutHttp entity, User utilisateurConnecte) {
+ entity.setDateCreation(new Date());
+ if (utilisateurConnecte != null) {
+ entity.setUtilisateurCreation(utilisateurConnecte.getUserName());
+ }
+ }
+
+ @Override
+ public CodeStatutHttp remove(Long id, User connectedUser) {
+ CodeStatutHttp entity = find(getEntityIdName(), id);
+ beforeRemove(entity, connectedUser);
+ return update(id, entity);
+ }
+
+ @Override
+ public Class<CodeStatutHttpReporting> getClazz() {
+ return CodeStatutHttpReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<CodeStatutHttpReporting> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return CommonsToolsEntity.convertToCodeStatutHttpReporting(findAll(searchEntity, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false );
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(CodeStatutHttpSearch searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<CodeStatutHttp, Long> paginationWithCriteriaEntityDAO() {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ /**
+ * Methode permettant de recuperer le libellé via un code
+ * @param code
+ * @return
+ */
+ @Override
+ public String getLibelleByCode(String code){
+ List<CodeStatutHttp> liste = findByUniqueProperty("code", code, null);
+ String libelle = null;
+ if(liste != null && !liste.isEmpty()){
+ libelle = liste.get(0).getLibelle();
+ }
+ return libelle;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/CustomTypeFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/CustomTypeFichierManagerImpl.java
new file mode 100644
index 0000000..aefcab1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/CustomTypeFichierManagerImpl.java
@@ -0,0 +1,105 @@
+package com.megatim.fdxconsultation.core.impl.customtypefichier;
+
+import com.megatim.fdxcommons.core.ifaces.customtypefichier.DynamicClassCreator;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.dao.ifaces.integration.ColumnDefinitionDAO;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+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.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.file.Paths;
+import java.sql.Connection;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class CustomTypeFichierManagerImpl implements CustomTypeFichierManager {
+
+ @EJB
+ ColumnDefinitionDAO columnDefinitionDAO;
+
+ @Inject
+ DynamicClassCreator dynamicClassCreator;
+
+ @Inject
+ DataInMemoryHandler dataInMemory;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public List<Object> getDatas(CriteriaEntityFromView criterion, String codeTypeFichier, boolean isDetail) {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ String referentielEncours = dataInMemory.getDataInMemory().getReferentielEnCours().getVersion();
+ List<FdxTableRow> rows = FdxConsultationTableFactory.createTable(codeTypeFichier, referentielEncours, connection)
+ .selectResult(new CriteriaEntityFromViewToQueryCriterion(criterion).queryCriterion(), connection)
+ .rows();
+
+ String className = codeTypeFichier + "_" + referentielEncours;
+ Class<?> classe = null;
+
+ try {
+ classe = loadClass(className);
+ } catch (ClassNotFoundException ex) {
+ classe = createClass(codeTypeFichier, referentielEncours);
+ }
+
+ return initializeDataSource(rows, classe);
+ } catch (Exception ex) {
+ Logger.getLogger(CustomTypeFichierManagerImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<ColumnDefinition> getColumnDefinition(String codeTypeFichier) throws Exception {
+ ColumnDefinitionSearch searchEntity = new ColumnDefinitionSearch();
+ searchEntity.setCodeTypeFichier(codeTypeFichier);
+ return columnDefinitionDAO.getAll(searchEntity);
+ }
+
+ private Class<?> createClass(String codeTypeFichier, String referentielEncours) throws MalformedURLException, ClassNotFoundException {
+ String className = codeTypeFichier + "_" + referentielEncours;
+ List<ColumnDefinition> columnDefinitions = columnDefinitionDAO.findByReferentielAndTypeFichier(referentielEncours, codeTypeFichier);
+
+ TableDefinition tableDefinition = new TableDefinition();
+ tableDefinition.getColumnDefinitions().addAll(columnDefinitions);
+ tableDefinition.setCodeTypeFichier(codeTypeFichier);
+ tableDefinition.setReferentielVersion(referentielEncours);
+
+ dynamicClassCreator.createDynamicClasses(Arrays.asList(tableDefinition));
+
+ // Chargement de la classe compilée.
+ URLClassLoader classLoader = URLClassLoader.newInstance(new URL[]{Paths.get(AppCommonContext.DYNAMIC_CLASSES_DIR).toUri().toURL()});
+ return Class.forName(AppCommonContext.DYNAMIC_CLASSES_PACKAGE + "." + className, true, classLoader);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/DynamicClassCreatorImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/DynamicClassCreatorImpl.java
new file mode 100644
index 0000000..90b314a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/customtypefichier/DynamicClassCreatorImpl.java
@@ -0,0 +1,150 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-private.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.impl.customtypefichier;
+
+import com.megatim.fdxcommons.core.ifaces.customtypefichier.DynamicClassCreator;
+import com.megatim.fdxcommons.core.impl.tools.CommonUtilities;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.io.BufferedWriter;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.tools.JavaCompiler;
+import javax.tools.ToolProvider;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class DynamicClassCreatorImpl implements DynamicClassCreator {
+
+ @Override
+ public void createDynamicClasses(List<TableDefinition> tableDefinitions) {
+ for (TableDefinition t : tableDefinitions) {
+ try {
+ String className = t.getCodeTypeFichier() + "_" + t.getReferentielVersion();
+ createClass(t.getColumnDefinitions(), className, AppCommonContext.DYNAMIC_CLASSES_PACKAGE, AppCommonContext.DYNAMIC_CLASSES_DIR);
+ } catch (Exception ex) {
+ Logger.getLogger(DynamicClassCreatorImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+ }
+
+ private void createClass(List<ColumnDefinition> columnsDefinitions, String className, String packageName, String parentDirectory) throws Exception {
+ Path javaFilePath = Paths.get(parentDirectory, packageName, className + ".java");
+ String packageDeclaration = "package " + packageName + ";\n\n";
+ String classDeclaration = "public class " + className + " {";
+
+ //Enregistrement des éléments de la classe.
+ try ( BufferedWriter bufferWriter = Files.newBufferedWriter(javaFilePath, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+ bufferWriter.write(packageDeclaration);
+ bufferWriter.write(createImportsDeclaration(columnsDefinitions));
+ bufferWriter.write(classDeclaration);
+
+ for (ColumnDefinition c : columnsDefinitions) {
+ String fieldDeclaration = createField(c.getName(), CommonUtilities.fullQualifiedNameTypeFromTypeDonnee(TypeDonnee.fromValeur(c.getTypeDonnee())));
+ bufferWriter.write(fieldDeclaration);
+ }
+ bufferWriter.write(createNoArgsConstructor(className));
+
+ for (ColumnDefinition c : columnsDefinitions) {
+ bufferWriter.write(createGetter(c.getName(), CommonUtilities.fullQualifiedNameTypeFromTypeDonnee(TypeDonnee.fromValeur(c.getTypeDonnee()))));
+ bufferWriter.write(createSetter(c.getName(), CommonUtilities.fullQualifiedNameTypeFromTypeDonnee(TypeDonnee.fromValeur(c.getTypeDonnee()))));
+ }
+ bufferWriter.write(createtoString(columnsDefinitions));
+ bufferWriter.write("\n}");
+ }
+
+ //Compilation du fichier crée.
+ JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ compiler.run(null, null, null, javaFilePath.toString());
+
+ }
+
+ private String createImportsDeclaration(List<ColumnDefinition> columnsDefinitions) {
+ StringBuilder importsDeclaration = new StringBuilder();
+ columnsDefinitions
+ .stream()
+ .filter(p -> p.getTypeDonnee().equalsIgnoreCase(TypeDonnee.DATE.getValue()))
+ .findFirst()
+ .ifPresent(c -> importsDeclaration.append("import java.time.LocalDateTime;\n"));
+
+ columnsDefinitions
+ .stream()
+ .filter(p -> p.getTypeDonnee().equalsIgnoreCase(TypeDonnee.DECIMAL.getValue()))
+ .findFirst()
+ .ifPresent(c -> importsDeclaration.append("import java.math.BigDecimal;\n\n"));
+
+ return importsDeclaration.toString();
+ }
+
+ private String createField(String fieldName, Class<?> fieldClass) {
+ StringBuilder fieldDeclaration = new StringBuilder();
+ fieldDeclaration.append("\n\tprivate ").append(fieldClass.getSimpleName()).append((" ")).append(fieldName).append(";\n");
+
+ return fieldDeclaration.toString();
+ }
+
+ private String createNoArgsConstructor(String className) {
+ StringBuilder constructorDeclaration = new StringBuilder();
+
+ constructorDeclaration.append("\n\tpublic ").append(className).append("() {\n");
+ constructorDeclaration.append("\t}\n");
+
+ return constructorDeclaration.toString();
+ }
+
+ private String createGetter(String fieldName, Class<?> fieldClass) {
+ StringBuilder methodDeclaration = new StringBuilder();
+ String firstCharacter = (fieldName.charAt(0) + "").toUpperCase();
+ String methodName = "get" + firstCharacter + fieldName.substring(1);
+
+ methodDeclaration.append("\n\tpublic ").append(fieldClass.getSimpleName()).append(" ").append(methodName).append("() {\n");
+ methodDeclaration.append("\t\treturn this.").append(fieldName).append(";\n");
+ methodDeclaration.append("\t}");
+
+ return methodDeclaration.toString();
+ }
+
+ private String createSetter(String fieldName, Class<?> fieldClass) {
+ StringBuilder methodDeclaration = new StringBuilder();
+ String firstCharacter = (fieldName.charAt(0) + "").toUpperCase();
+ String methodName = "set" + firstCharacter + fieldName.substring(1);
+
+ methodDeclaration.append("\n\tpublic").append(" void ").append(methodName).append("(").append(fieldClass.getSimpleName()).append(" ").append(fieldName).append(") {\n");
+ methodDeclaration.append("\t\t").append("this.").append(fieldName).append(" = ").append(fieldName).append(";\n");
+ methodDeclaration.append("\t}");
+
+ return methodDeclaration.toString();
+ }
+
+ private String createtoString(List<ColumnDefinition> columnDefinitions) {
+ StringBuilder toString = new StringBuilder();
+ toString.append("\n\tpublic String toString(){\n\t\treturn ");
+
+ if (columnDefinitions.isEmpty()) {
+ toString.append("\"\"");
+ } else {
+ columnDefinitions.stream().forEach(c -> toString.append("\" ").append(c.getName()).append(" = \"").append(" + this.").append(c.getName()).append("+"));
+ toString.replace(toString.length() - 1, toString.length(), "");
+ }
+ toString.append(";\n\t}");
+
+ return toString.toString();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionHandlerImpl.java
new file mode 100644
index 0000000..d575c2b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionHandlerImpl.java
@@ -0,0 +1,37 @@
+/*
+ * 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.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionSource;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
+import java.time.LocalDateTime;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import com.megatim.fdxcommons.core.ifaces.dataproduction.DataProductionHandler;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class DataProductionHandlerImpl implements DataProductionHandler {
+
+ @Inject
+ private DataProductionManager dataProductionManager;
+
+ @Override
+ public DataProduction handle(String codeTypeFichier, String connectedParticipant, String referentielVersion, String fileName) {
+ DataProduction dataProduction = new DataProduction();
+ dataProduction.setDateProduction(LocalDateTime.now());
+ dataProduction.setReferentielVersion(referentielVersion);
+ dataProduction.setCodeTypeFichier(codeTypeFichier);
+ dataProduction.setCodeParticipant(connectedParticipant);
+ dataProduction.setSource(fileName != null ? DataProductionSource.FICHIER : DataProductionSource.API);
+ dataProduction.setFileName(fileName);
+
+ return dataProductionManager.save(dataProduction);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionManagerImpl.java
new file mode 100644
index 0000000..591baf7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionManagerImpl.java
@@ -0,0 +1,124 @@
+package com.megatim.fdxconsultation.core.impl.dataproduction;
+
+import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.DataProductionDAO;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class DataProductionManagerImpl implements DataProductionManager {
+
+ @EJB
+ private DataProductionDAO dao;
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Override
+ public DataProductionDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public List<DataProduction> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(DataProduction.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité DataProduction : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ return getDao().findAll(criteriaFormRequest.getCriteria(), fetchEagerFields, Arrays.asList(new OrderByDefinition("dateProduction", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(DataProductionManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<DataProduction> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(DataProduction.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité DataProduction : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+ return getDao().findWithPagination(criteriaFormRequest.getCriteria(), fetchEagerFields, Arrays.asList(new OrderByDefinition("dateProduction", OrderByType.DESC)), pageNumber, pageSize);
+
+ } catch (Exception ex) {
+ Logger.getLogger(DataProductionManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<DataProductionDto> getClazz() {
+ return DataProductionDto.class;
+ }
+
+ @Override
+ public List<DataProductionDto> getDatas(CriteriaEntityFromView searchEntity) throws Exception {
+ return mapper.dataProductionListToDataProductionDtoList(findAll(searchEntity, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public List<DataProduction> findByStatutDataProduction(StatutDataProduction statut) {
+ return dao.findByStatutDataProduction(statut);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionToDeleteManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionToDeleteManagerImpl.java
new file mode 100644
index 0000000..b266061
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/DataProductionToDeleteManagerImpl.java
@@ -0,0 +1,26 @@
+/*
+ * 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.dataproduction;
+
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionToDeleteManager;
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.DataProductionToDeleteDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class DataProductionToDeleteManagerImpl implements DataProductionToDeleteManager {
+
+ @EJB
+ private DataProductionToDeleteDAO dao;
+
+ @Override
+ public DataProductionToDeleteDAO getDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/metadata/ProductionMetaDataManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/metadata/ProductionMetaDataManagerImpl.java
new file mode 100644
index 0000000..66e098e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproduction/metadata/ProductionMetaDataManagerImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.metadata.ProductionMetaDataManager;
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.metadata.ProductionMetaDataDAO;
+import java.util.List;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ProductionMetaDataManagerImpl implements ProductionMetaDataManager {
+
+ @EJB
+ private ProductionMetaDataDAO dao;
+
+ @Override
+ public ProductionMetaDataDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public void deleteById(Long dataProductionId) {
+ dao.deleteById(dataProductionId);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTask.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTask.java
new file mode 100644
index 0000000..500dcc7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTask.java
@@ -0,0 +1,10 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+/**
+ *
+ * @author Gabuntu
+ */
+interface DataProductionTask {
+
+ public void processProduction();
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTaskFactory.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTaskFactory.java
new file mode 100644
index 0000000..fed1903
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionTaskFactory.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.metadata.ProductionMetaDataManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableInsert;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.impl.sockets.DataProductionSessionHandler;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import javax.annotation.Resource;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+class DataProductionTaskFactory {
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private DataProductionSessionHandler dataProductionSessionHandler;
+
+ @Inject
+ private TableInsert tableInsert;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ private ProductionMetaDataManager metaDataManager;
+
+ DataProductionTask createDataProductionTask(DataProduction dataProduction) {
+ if (dataProduction.getDataProductionType().equals(DataProductionType.DELETE)) {
+ return new DeleteDataProductionTask(dataProduction, dataSource);
+ } else {
+ return new FileDataProductionTask(dataProduction, dataSource, columnDefinitionManager, dataProductionSessionHandler, tableInsert, mapper, metaDataManager);
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorker.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorker.java
new file mode 100644
index 0000000..a163288
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorker.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ *
+ * @author Gabuntu
+ */
+class DataProductionWorker extends Thread {
+
+ private final BlockingQueue<DataProductionTask> tasks = new LinkedBlockingQueue<>();
+ private volatile boolean running = true;
+
+ public DataProductionWorker(String name) {
+ super(name);
+ }
+
+ @Override
+ public void run() {
+ while (running) {
+ try {
+ DataProductionTask task = tasks.take();
+ task.processProduction();
+ } catch (InterruptedException ex) {
+ if (!running) {
+ break; // Exit if interrupted and not running
+ }
+ }
+ }
+ }
+
+ public void shutdown() {
+ running = false;
+ this.interrupt(); // Interrupt the thread to wake it up
+ }
+
+ public void addTask(DataProductionTask dataProductionTask) {
+ tasks.add(dataProductionTask);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorkerGroup.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorkerGroup.java
new file mode 100644
index 0000000..8089676
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DataProductionWorkerGroup.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DataProductionWorkerGroup {
+
+ public void start();
+
+ public void shutdown();
+
+ public void addNewDataProductionTask(DataProduction dataProduction);
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DefaultDataProductionWorkerGroup.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DefaultDataProductionWorkerGroup.java
new file mode 100644
index 0000000..138228a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DefaultDataProductionWorkerGroup.java
@@ -0,0 +1,81 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+public class DefaultDataProductionWorkerGroup implements DataProductionWorkerGroup {
+
+ @Inject
+ private DataProductionTaskFactory dataProductionTaskFactory;
+
+ private final int WORKER_NUMBER = 4;
+ private final DataProductionWorker[] workers = new DataProductionWorker[WORKER_NUMBER];
+ private final Map<Integer, Set<String>> workerToCodeTypeFichiers = new HashMap<>();
+ private final AtomicInteger currentWorkerIndex = new AtomicInteger(0);
+
+ @Override
+ public void start() {
+ for (int i = 0; i < WORKER_NUMBER; i++) {
+ workers[i] = new DataProductionWorker("Worker-" + i);
+ workers[i].start();
+ workerToCodeTypeFichiers.put(i, new HashSet<>());
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ for (DataProductionWorker worker : workers) {
+ worker.shutdown();
+ }
+ workerToCodeTypeFichiers.clear();
+ }
+
+ @Override
+ public void addNewDataProductionTask(DataProduction dataProduction) {
+ DataProductionWorker worker = workerForTask(dataProduction.getCodeTypeFichier());
+ worker.addTask(dataProductionTaskFactory.createDataProductionTask(dataProduction));
+ }
+
+ private synchronized DataProductionWorker workerForTask(String codeTypeFichier) {
+ Integer workerIndex = workerLinkToCodeTypeFichier(codeTypeFichier);
+ if (workerIndex != null) {
+ return workers[workerIndex];
+ }
+ int currentIndex = currentWorkerIndex.getAndIncrement();
+ DataProductionWorker worker = workers[currentIndex];
+
+ workerToCodeTypeFichiers.get(currentIndex).add(codeTypeFichier);
+
+ changeCurrentWorkerIndex();
+
+ return worker;
+ }
+
+ private Integer workerLinkToCodeTypeFichier(String codeTypeFichier) {
+ return workerToCodeTypeFichiers
+ .entrySet()
+ .stream()
+ .filter(e -> e.getValue().contains(codeTypeFichier))
+ .findFirst()
+ .map(e -> e.getKey())
+ .orElse(null);
+ }
+
+ private void changeCurrentWorkerIndex() {
+ if ((currentWorkerIndex.get() % (WORKER_NUMBER - 1)) == 0) {
+ currentWorkerIndex.set(0);
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DeleteDataProductionTask.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DeleteDataProductionTask.java
new file mode 100644
index 0000000..8dbd1ff
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/DeleteDataProductionTask.java
@@ -0,0 +1,43 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.sql.Connection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+class DeleteDataProductionTask implements DataProductionTask {
+
+ private final DataProduction dataProduction;
+ private final DataSource dataSource;
+
+ public DeleteDataProductionTask(DataProduction dataProduction, DataSource dataSource) {
+ this.dataProduction = dataProduction;
+ this.dataSource = dataSource;
+ }
+
+ @Override
+ public void processProduction() {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ connection.setAutoCommit(false);
+
+ FdxConsultationTable fdxConsTable = FdxConsultationTableFactory.createTable(dataProduction.getCodeTypeFichier(), dataProduction.getReferentielVersion(), connection);
+ fdxConsTable.delete(null, dataProduction, connection);
+ connection.commit();
+
+ } catch (Exception ex) {
+ Logger.getLogger(DeleteDataProductionTask.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/FileDataProductionTask.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/FileDataProductionTask.java
new file mode 100644
index 0000000..a748b3d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/dataproductionworker/FileDataProductionTask.java
@@ -0,0 +1,93 @@
+package com.megatim.fdxconsultation.core.impl.dataproductionworker;
+
+import com.megatim.fdxcommons.core.impl.tools.CommonUtilities;
+import com.megatim.fdxcommons.model.camel.CamelRouteConfiguration;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.metadata.ProductionMetaDataManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableInsert;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.impl.camel.helper.FileInsertionProcess;
+import com.megatim.fdxconsultation.core.impl.sockets.DataProductionSessionHandler;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.sql.Connection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+class FileDataProductionTask implements DataProductionTask {
+
+ private final DataProduction dataProduction;
+ private final DataSource dataSource;
+ private final ColumnDefinitionManager columnDefinitionManager;
+ private final DataProductionSessionHandler dataProductionSessionHandler;
+ private final TableInsert tableInsert;
+ private final MapStructMapper mapper;
+ private final ProductionMetaDataManager metaDataManager;
+
+ public FileDataProductionTask(DataProduction dataProduction,
+ DataSource dataSource,
+ ColumnDefinitionManager columnDefinitionManager,
+ DataProductionSessionHandler dataProductionSessionHandler,
+ TableInsert tableInsert,
+ MapStructMapper mapper,
+ ProductionMetaDataManager metaDataManager) {
+ this.dataProduction = dataProduction;
+ this.dataSource = dataSource;
+ this.columnDefinitionManager = columnDefinitionManager;
+ this.dataProductionSessionHandler = dataProductionSessionHandler;
+ this.tableInsert = tableInsert;
+ this.mapper = mapper;
+ this.metaDataManager = metaDataManager;
+ }
+
+ @Override
+ public void processProduction() {
+ System.out.println("-------------------------before FileInsertionProcess-------------------");
+ CommonDataProduction cd = mapper.dataProductionToCommonDataProduction(dataProduction);
+ cd.setId(dataProduction.getId());
+
+ try {
+ File dataFile = dataFile(dataProduction);
+
+ if (dataFile.exists()) {
+ Charset charset = CommonUtilities.getCharset(dataFile);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+ new FileInsertionProcess(columnDefinitionManager,
+ cd,
+ connection,
+ dataFile,
+ charset,
+ tableInsert,
+ metaDataManager
+ ).process();
+ connection.commit();
+ }
+ System.out.println("-------------------after FileInsertionProcess---------------------");
+ dataProductionSessionHandler.publishMessage(dataProduction);
+ dataFile.delete();
+ metaDataManager.deleteById(cd.getId());
+ }
+ } catch (Exception ex) {
+ Logger.getLogger(FileDataProductionTask.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ private File dataFile(CommonDataProduction dataProduction) throws IOException {
+ CamelRouteConfiguration camelRouteConfiguration = new CamelRouteConfiguration(AppContext.PROPERTY_FILE_PATH);
+ String dataDir = camelRouteConfiguration.getLocalConfiguration().consultationDestinationDir();
+
+ return new File(dataDir, dataProduction.getIntegrationFileName());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/db/ReferentielDataSaverImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/db/ReferentielDataSaverImpl.java
new file mode 100644
index 0000000..737c630
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/db/ReferentielDataSaverImpl.java
@@ -0,0 +1,586 @@
+package com.megatim.fdxconsultation.core.impl.db;
+
+import com.megatim.fdxcommons.core.ifaces.db.ReferentielDataSaver;
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.tools.exceptions.TypeFichierExistNotException;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.integration.TableDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ApplicationSourceManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ExtensionFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeNoeudManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeParticipantManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.NoeudManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ParticipantManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.PaysManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.StructureLigneManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ValidateurFichierConfigurationManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ValidateurFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ReferentielDataSaverImpl implements ReferentielDataSaver {
+
+ @Inject
+ private ReferentielManager refManager;
+
+ @Inject
+ private ApplicationSourceManager appSourceManager;
+
+ @Inject
+ private ExtensionFichierManager extFichierManager;
+
+ @Inject
+ private GroupeNoeudManager groupeNoeudManager;
+
+ @Inject
+ private GroupeParticipantManager groupePartManager;
+
+ @Inject
+ private NoeudManager noeudManager;
+
+ @Inject
+ private ParticipantManager participantManager;
+
+ @Inject
+ private PaysManager paysManager;
+
+ @Inject
+ private RoutageManager routageManager;
+
+ @Inject
+ private TypeFichierManager typeFichierManager;
+
+ @Inject
+ private StructureLigneManager structLigneManager;
+
+ @Inject
+ private ValidateurFichierManager valFichManager;
+
+ @Inject
+ private ValidateurFichierConfigurationManager valFichConfManager;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private TableDefinitionManager tableDefinitionManager;
+
+ @Inject
+ NatureProductionFichierManager natureProdFichManager;
+
+ private Map<String, Referentiel> referentielsMap;
+ private Map<String, TypeFichier> typeFichiersMap;
+ private Map<String, Pays> paysMap;
+ private Map<String, Participant> participantsMap;
+ private Map<String, ApplicationSource> appSourcesMap;
+ private Map<String, ExtensionFichier> extensionFichiersMap;
+ private Map<String, ValidateurFichier> validateurFichiersMap;
+ private Map<String, ValidateurFichierConfiguration> validateurFichierConfsMap;
+ private Map<String, StructureLigne> structLignesMap;
+ private Map<String, Noeud> noeudsMap;
+ private Map<String, GroupeNoeud> groupeNoeudsMap;
+ private Map<String, GroupeParticipant> groupeParticipantsMap;
+ private Map<String, Routage> routagesMap;
+ private Map<String, ColumnDefinition> columnDefinitionsMap;
+ private Map<String, NatureProductionFichier> natureProdFichsMap;
+
+ @Override
+ public void persist(ReferentielToImportData referentielToImportData) throws Exception {
+
+ refManager.archiverReferentielEncours();
+
+ persistReferentiels(referentielToImportData.getReferentiels());
+
+ persistApplicationSources(referentielToImportData.getApplicationSources());
+
+ persistPayss(referentielToImportData.getPays());
+
+ persistExtensionFichiers(referentielToImportData.getExtensionFichiers());
+
+ persistParticipants(referentielToImportData.getParticipants());
+
+ persistTypeFichiers(referentielToImportData.getTypeFichiers());
+
+// persistValidateurFichiers(referentielToImportData.getValidateurFichiers());
+//
+// persistValidateurFichierConfigurations(referentielToImportData.getValidateurFichierConfigurations());
+//
+// persitStructuresLignes(referentielToImportData.getStructureLignes());
+ persistNoeuds(referentielToImportData.getNoeuds());
+
+ persistGroupeNoeuds(referentielToImportData.getGroupeNoeuds());
+
+ persistGroupeParticipants(referentielToImportData.getGroupeParticipants());
+
+ persistRoutages(referentielToImportData.getRoutages());
+
+ persistTableDefinitions(referentielToImportData.getTableDefinitions());
+
+ persistColumnsDefinition(referentielToImportData.getTableDefinitions());
+
+ persistNatureProductionFichiers(referentielToImportData.getNatureProductionFichiers());
+ }
+
+ private void persistReferentiels(List<Referentiel> referentiels) throws Exception {
+ referentielsMap = refManager.getAll(null).stream().collect(Collectors.toMap(Referentiel::getVersion, Function.identity()));
+
+ if (referentiels != null) {
+
+ for (Referentiel ref : referentiels) {
+ Referentiel referentielFound = referentielsMap.get(ref.getVersion());
+
+ if (referentielFound == null) {
+ refManager.save(ref);
+ }
+ }
+ }
+ }
+
+ private void persistApplicationSources(List<ApplicationSource> appSources) throws Exception {
+ referentielsMap = refManager.getAll(null).stream().collect(Collectors.toMap(Referentiel::getVersion, Function.identity()));
+ appSourcesMap = appSourceManager.getAll(null).stream().collect(Collectors.toMap(ApplicationSource::getLibelle, Function.identity()));
+
+ if (appSources != null) {
+
+ for (ApplicationSource appSource : appSources) {
+ String referentielVersion = appSource.getReferentiel().getVersion();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("Le referentiel suivant est introuvable : " + referentielVersion);
+ }
+
+ ApplicationSource appSourceFound = appSourcesMap.get(appSource.getLibelle());
+ if (appSourceFound == null) {
+ appSource.setReferentiel(referentielFound);
+ appSourceManager.save(appSource);
+ }
+
+ }
+ }
+
+ }
+
+ private void persistPayss(List<Pays> payss) throws Exception {
+ paysMap = paysManager.getAll(null).stream().collect(Collectors.toMap(Pays::getCode, Function.identity()));
+
+ if (payss != null) {
+
+ for (Pays p : payss) {
+ String referentielVersion = p.getReferentiel().getVersion();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+ Pays paysFound = paysMap.get(p.getCode());
+
+ if (paysFound == null) {
+ p.setReferentiel(referentielFound);
+ p.setParticipants(new HashSet<>());
+ paysManager.save(p);
+ }
+
+ }
+ }
+ }
+
+ private void persistExtensionFichiers(List<ExtensionFichier> extFichiers) throws Exception {
+ referentielsMap = refManager.getAll(null).stream().collect(Collectors.toMap(Referentiel::getVersion, Function.identity()));
+ extensionFichiersMap = extFichierManager.getAll(null).stream().collect(Collectors.toMap(ExtensionFichier::getExtension, Function.identity()));
+
+ if (extFichiers != null) {
+
+ for (ExtensionFichier e : extFichiers) {
+ String referentielVersion = e.getReferentiel().getVersion();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("Le referentiel suivant est introuvable : " + referentielVersion);
+ }
+
+ ExtensionFichier extFichierFound = extensionFichiersMap.get(e.getExtension());
+ if (extFichierFound == null) {
+ e.setReferentiel(referentielFound);
+ extFichierManager.save(e);
+ }
+ }
+ }
+ }
+
+ private void persistParticipants(List<Participant> participants) throws Exception {
+ paysMap = paysManager.getAll(null).stream().collect(Collectors.toMap(Pays::getCode, Function.identity()));
+ participantsMap = participantManager.getAll(null).stream().collect(Collectors.toMap(Participant::getCode, Function.identity()));
+
+ if (participants != null) {
+
+ for (Participant p : participants) {
+ String referentielVersion = p.getReferentiel().getVersion();
+ String codePays = p.getPays().getCode();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+ Pays paysFound = paysMap.get(codePays);
+
+ if (paysFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Pays suivante est introuvable : " + codePays);
+ }
+ Participant participantFound = participantsMap.get(p.getCode());
+
+ if (participantFound == null) {
+ p.setPays(paysFound);
+ p.setReferentiel(referentielFound);
+ p.setNoeuds(new HashSet<>());
+ p.setRoutageEnvois(new HashSet<>());
+ p.setRoutageReceptions(new HashSet<>());
+ p.setGroupeParticipants(new HashSet<>());
+
+ participantManager.save(p);
+ }
+
+ }
+ }
+ }
+
+ private void persistTypeFichiers(List<TypeFichier> typeFichiers) throws Exception {
+ participantsMap = participantManager.getAll(null).stream().collect(Collectors.toMap(Participant::getCode, Function.identity()));
+ typeFichiersMap = typeFichierManager.getAll(null).stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+
+ if (typeFichiers != null) {
+
+ for (TypeFichier typeFich : typeFichiers) {
+
+ if (typeFich.getCategorieFichier().equals(CategorieFichier.STRUCTURE)) {
+
+ String referentielVersion = typeFich.getReferentiel().getVersion();
+ String codeParticipant = typeFich.getParticipant().getCode();
+
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+
+ Participant participantFound = participantsMap.get(codeParticipant);
+ if (participantFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Participant suivante est introuvable : " + codeParticipant);
+ }
+ TypeFichier typeFichierFound = typeFichiersMap.get(typeFich.getCode());
+
+ if (typeFichierFound == null) {
+ typeFich.setReferentiel(referentielFound);
+ typeFich.setParticipant(participantFound);
+ typeFich.setRoutages(new HashSet<>());
+ typeFich.setValidateurFichierConfigurations(new HashSet<>());
+ typeFich.setValidateurFichiers(new HashSet<>());
+
+ typeFichierManager.save(typeFich);
+ }
+ }
+ }
+ }
+ }
+
+ private void persistValidateurFichiers(List<ValidateurFichier> validateurFichiers) throws Exception {
+ validateurFichiersMap = valFichManager.getAll(null).stream().collect(Collectors.toMap(ValidateurFichier::getId, Function.identity()));
+ typeFichiersMap = typeFichierManager.getAll(null).stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+
+ if (validateurFichiers != null) {
+
+ for (ValidateurFichier val : validateurFichiers) {
+ String codeTypeFichier = val.getTypeFichier().getCode();
+ TypeFichier typeFichierFound = typeFichiersMap.get(codeTypeFichier);
+
+ if (typeFichierFound == null) {
+ throw new TypeFichierExistNotException(codeTypeFichier);
+ }
+ ValidateurFichier valFichFound = validateurFichiersMap.get(val.getId());
+
+ if (valFichFound == null) {
+ val.setTypeFichier(typeFichierFound);
+ valFichManager.save(val);
+ }
+ }
+ }
+ }
+
+ private void persistValidateurFichierConfigurations(List<ValidateurFichierConfiguration> valFichConfs) throws TypeFichierExistNotException, Exception {
+ validateurFichierConfsMap = valFichConfManager.getAll(null)
+ .stream()
+ .collect(Collectors.toMap(x -> x.getReferentiel().getVersion() + "-" + x.getTypeFichier().getCode(),
+ Function.identity()));
+
+ if (valFichConfs != null) {
+
+ for (ValidateurFichierConfiguration valFichConf : valFichConfs) {
+ String codeTypeFichier = valFichConf.getTypeFichier().getCode();
+ String referentielVersion = valFichConf.getReferentiel().getVersion();
+
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("Le referentiel suivant est introuvable : " + referentielVersion);
+ }
+
+ TypeFichier typeFichierFound = typeFichiersMap.get(codeTypeFichier);
+ if (typeFichierFound == null) {
+ throw new TypeFichierExistNotException(codeTypeFichier);
+ }
+
+ ValidateurFichierConfiguration ValFichConfFound = validateurFichierConfsMap.get(valFichConf.getReferentiel().getVersion() + "-" + valFichConf.getTypeFichier().getCode());
+
+ if (ValFichConfFound == null) {
+ valFichConf.setTypeFichier(typeFichierFound);
+ valFichConf.setReferentiel(referentielFound);
+
+ valFichConfManager.save(valFichConf);
+ }
+
+ }
+ }
+ }
+
+ private void persitStructuresLignes(List<StructureLigne> structLignes) throws Exception {
+ validateurFichiersMap = valFichManager.getAll(null).stream().collect(Collectors.toMap(ValidateurFichier::getId, Function.identity()));
+ appSourcesMap = appSourceManager.getAll(null).stream().collect(Collectors.toMap(ApplicationSource::getLibelle, Function.identity()));
+ structLignesMap = structLigneManager.getAll(null).stream().collect(Collectors.toMap(StructureLigne::getId, Function.identity()));
+
+ if (structLignes != null) {
+
+ for (StructureLigne s : structLignes) {
+ String valFichierId = s.getValidateurFichier().getId();
+ String libelleAppSource = s.getApplicationSource().getLibelle();
+
+ ApplicationSource appSourceFound = appSourcesMap.get(libelleAppSource);
+ if (appSourceFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource ApplicationSource suivante est introuvable : " + libelleAppSource);
+ }
+
+ ValidateurFichier valFichFound = validateurFichiersMap.get(valFichierId);
+ if (valFichFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource ValidateurFichier suivante est introuvable : " + valFichierId);
+ }
+ StructureLigne structureLigneFound = structLignesMap.get(s.getId());
+
+ if (structureLigneFound == null) {
+ s.setValidateurFichier(valFichFound);
+ s.setApplicationSource(appSourceFound);
+
+ structLigneManager.save(s);
+ }
+
+ }
+ }
+ }
+
+ private void persistNoeuds(List<Noeud> noeuds) throws Exception {
+ noeudsMap = noeudManager.getAll(null).stream().collect(Collectors.toMap(Noeud::getCode, Function.identity()));
+
+ if (noeuds != null) {
+
+ for (Noeud n : noeuds) {
+ String referentielVersion = n.getReferentiel().getVersion();
+ String codeParticipant = n.getParticipant().getCode();
+
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+
+ Participant participantFound = participantsMap.get(codeParticipant);
+ if (participantFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Participant suivante est introuvable : " + codeParticipant);
+ }
+ Noeud noeudFound = noeudsMap.get(n.getCode());
+
+ if (noeudFound == null) {
+ n.setReferentiel(referentielFound);
+ n.setParticipant(participantFound);
+ n.setGroupeNoeuds(new HashSet<>());
+ n.setRoutageEnvois(new HashSet<>());
+ n.setRoutageReceptions(new HashSet<>());
+
+ noeudManager.save(n);
+ }
+
+ }
+ }
+ }
+
+ private void persistGroupeNoeuds(List<GroupeNoeud> groupeNoeuds) throws Exception {
+ groupeNoeudsMap = groupeNoeudManager.getAll(null).stream().collect(Collectors.toMap(GroupeNoeud::getCode, Function.identity()));
+
+ if (groupeNoeuds != null) {
+
+ for (GroupeNoeud gn : groupeNoeuds) {
+ String referentielVersion = gn.getReferentiel().getVersion();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+ GroupeNoeud grpNoeudFound = groupeNoeudsMap.get(gn.getCode());
+
+ if (grpNoeudFound == null) {
+ gn.setReferentiel(referentielFound);
+ groupeNoeudManager.save(gn);
+ }
+ }
+ }
+ }
+
+ private void persistGroupeParticipants(List<GroupeParticipant> groupeParticipants) throws Exception {
+ groupeParticipantsMap = groupePartManager.getAll(null).stream().collect(Collectors.toMap(GroupeParticipant::getCode, Function.identity()));
+
+ if (groupeParticipants != null) {
+
+ for (GroupeParticipant gp : groupeParticipants) {
+ String referentielVersion = gp.getReferentiel().getVersion();
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("La ressource Referentiel suivante est introuvable : " + referentielVersion);
+ }
+ GroupeParticipant grpParticipantFound = groupeParticipantsMap.get(gp.getCode());
+
+ if (grpParticipantFound == null) {
+ gp.setReferentiel(referentielFound);
+ gp.setRoutageEnvois(new HashSet<>());
+ gp.setRoutageReceptions(new HashSet<>());
+
+ groupePartManager.save(gp);
+ }
+
+ }
+ }
+ }
+
+ private void persistRoutages(List<Routage> routages) throws Exception {
+ typeFichiersMap = typeFichierManager.getAll(null).stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+ routagesMap = routageManager.getAll(null)
+ .stream()
+ .collect(Collectors.toMap(x -> x.getReferentiel().getVersion() + "-" + x.getTypeFichier().getCode(),
+ Function.identity()));
+
+ if (routages != null) {
+
+ for (Routage r : routages) {
+ String referentielVersion = r.getReferentiel().getVersion();
+ String codeTypeFichier = r.getTypeFichier().getCode();
+
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("Le referentiel suivant est introuvable : " + referentielVersion);
+ }
+
+ TypeFichier typeFichierFound = typeFichiersMap.get(codeTypeFichier);
+ if (typeFichierFound == null) {
+ throw new TypeFichierExistNotException(codeTypeFichier);
+ }
+ Routage routageFound = routagesMap.get(r.getReferentiel().getVersion() + "-" + r.getTypeFichier().getCode());
+
+ if (routageFound == null) {
+ r.setReferentiel(referentielFound);
+ r.setTypeFichier(typeFichierFound);
+
+ routageManager.save(r);
+ }
+ }
+ }
+ }
+
+ private void persistTableDefinitions(List<TableDefinition> tablesDefinition) {
+ for (TableDefinition t : tablesDefinition) {
+ if (t.getHeaderPresent() != null && t.getColumnDelimiter() != null && t.getLineDelimiter() != null) {
+ tableDefinitionManager.save(t);
+ }
+ }
+ }
+
+ private void persistColumnsDefinition(List<TableDefinition> tablesDefinition) throws Exception {
+ columnDefinitionsMap = columnDefinitionManager.getAll(null)
+ .stream()
+ .collect(Collectors.toMap(x -> x.getName() + "-" + x.getReferentielVersion() + "-" + x.getCodeTypeFichier(),
+ Function.identity()
+ ));
+
+ if (tablesDefinition != null) {
+
+ for (TableDefinition t : tablesDefinition) {
+
+ for (ColumnDefinition c : t.getColumnDefinitions()) {
+ ColumnDefinition colDefFound = columnDefinitionsMap.get(c.getName() + "-" + c.getReferentielVersion() + "-" + c.getCodeTypeFichier());
+
+ if (colDefFound == null) {
+ columnDefinitionManager.save(c);
+ }
+ }
+ }
+ }
+ }
+
+ private void persistNatureProductionFichiers(List<NatureProductionFichier> natureProductionFichs) throws TypeFichierExistNotException {
+ natureProdFichsMap = natureProdFichManager.getAll(null)
+ .stream()
+ .collect(Collectors.toMap(x -> x.getReferentiel().getVersion() + "-" + x.getTypeFichier().getCode(),
+ Function.identity()));
+
+ if (natureProductionFichs != null) {
+
+ for (NatureProductionFichier n : natureProductionFichs) {
+ String referentielVersion = n.getReferentiel().getVersion();
+ String codeTypeFichier = n.getTypeFichier().getCode();
+
+ Referentiel referentielFound = referentielsMap.get(referentielVersion);
+ if (referentielFound == null) {
+ throw new CommonRessourceNotFoundException("Le referentiel suivant est introuvable : " + referentielVersion);
+ }
+
+ TypeFichier typeFichierFound = typeFichiersMap.get(codeTypeFichier);
+ if (typeFichierFound == null) {
+ throw new TypeFichierExistNotException(codeTypeFichier);
+ }
+ NatureProductionFichier natureProdFichFound = natureProdFichsMap.get(n.getReferentiel().getVersion() + "-" + n.getTypeFichier().getCode());
+
+ if (natureProdFichFound == null) {
+ n.setReferentiel(referentielFound);
+ n.setTypeFichier(typeFichierFound);
+
+ natureProdFichManager.save(n);
+ }
+ }
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/CategoryManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/CategoryManagerImpl.java
new file mode 100644
index 0000000..2123257
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/CategoryManagerImpl.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxconsultation.core.impl.documents;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.commons.tools.exceptions.ApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.documents.CategoryManager;
+import com.megatim.fdxconsultation.dao.ifaces.documents.CategoryDAO;
+import com.megatim.fdxconsultation.dao.impl.utils.BaseEntityUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Category;
+import java.util.ArrayList;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class CategoryManagerImpl extends AbstractGenericManager<Category, Long> implements CategoryManager {
+
+ @Inject
+ private CategoryDAO dao;
+
+ @Override
+ public GenericDAO<Category, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Transactional
+ @Override
+ public Category add(Category category, User connectedUser) {
+ BaseEntityUtil.setBaseEntityFieldsForAdd(category, connectedUser);
+ return dao.save(category);
+ }
+
+ @Transactional
+ @Override
+ public Category update(Long id, Category category, User connectedUser) {
+ Category refreshCategory = getById(id);
+ refreshCategory.setName(category.getName());
+ refreshCategory.setPosition(category.getPosition());
+
+ BaseEntityUtil.setBaseEntityFieldsForUpdate(refreshCategory, connectedUser);
+ return dao.save(refreshCategory);
+ }
+
+ @Transactional
+ @Override
+ public Category delete(Long id, User connectedUser) {
+ Category category = getById(id);
+ BaseEntityUtil.setBaseEntityFieldsForDelete(category, connectedUser);
+ return dao.save(category);
+ }
+
+ private Category getById(Long id) {
+ Category category = dao.getById(id);
+ if (category == null) {
+ throw new ApplicationServerException("Categorie introuvable");
+ }
+ return category;
+ }
+
+ @Override
+ public List<Category> loadAll() {
+ return dao.loadAll();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/DocumentManageImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/DocumentManageImpl.java
new file mode 100644
index 0000000..0d5b28b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/documents/DocumentManageImpl.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.core.impl.documents;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.commons.tools.exceptions.ApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.documents.DocumentManager;
+import com.megatim.fdxconsultation.dao.ifaces.documents.CategoryDAO;
+import com.megatim.fdxconsultation.dao.ifaces.documents.DocumentDAO;
+import com.megatim.fdxconsultation.dao.impl.utils.BaseEntityUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Category;
+import com.megatim.fdxconsultation.model.documents.Document;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DocumentManageImpl extends AbstractGenericManager<Document, Long> implements DocumentManager {
+
+ @Inject
+ private DocumentDAO dao;
+
+ @Inject
+ private CategoryDAO categoryDAO;
+
+ @Override
+ public GenericDAO<Document, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Transactional
+ @Override
+ public Document add(Long CategoryId, Document document, User connectedUser) {
+
+ Category category = categoryDAO.getById(CategoryId);
+ if (category == null) {
+ throw new ApplicationServerException("La catégorie à associer au document à enregistrer est introuvable");
+ }
+
+ document.setCategory(category);
+
+ BaseEntityUtil.setBaseEntityFieldsForAdd(document, connectedUser);
+ return dao.save(document);
+ }
+
+ @Transactional
+ @Override
+ public Document update(Long id, Document document, User connectedUser) {
+
+ Document doc = getById(id);
+ doc.setLabel(document.getLabel());
+ doc.setVersion(document.getVersion());
+ doc.setPosition(document.getPosition());
+ doc.setItemFile(document.getItemFile());
+
+ BaseEntityUtil.setBaseEntityFieldsForUpdate(doc, connectedUser);
+ return dao.save(doc);
+ }
+
+ @Transactional
+ @Override
+ public Document delete(Long id, User connectedUser) {
+ Document document = getById(id);
+ BaseEntityUtil.setBaseEntityFieldsForDelete(document, connectedUser);
+ return dao.save(document);
+ }
+
+ private Document getById(Long id) {
+ Document document = dao.getById(id);
+ if (document == null) {
+ throw new ApplicationServerException("Document introuvable");
+ }
+ return document;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/factory/FdxConsultationTableFactory.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/factory/FdxConsultationTableFactory.java
new file mode 100644
index 0000000..4e484cf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/factory/FdxConsultationTableFactory.java
@@ -0,0 +1,31 @@
+/*
+ * 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.factory;
+
+import com.megatim.fdxcommons.tools.database.contrat.TableName;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableName;
+import java.sql.Connection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxConsultationTableFactory {
+
+ private static final Map<TableName, FdxConsultationTable> tableNameToFdxTable = new HashMap<>();
+
+ public static synchronized FdxConsultationTable createTable(String codeTypeFichier, String referentielVersion, Connection connection) {
+ TableName tableName = new FdxTableName(referentielVersion, codeTypeFichier);
+
+ if (tableNameToFdxTable.get(tableName) == null) {
+ FdxConsultationTable fdxTable = new FdxConsultationTable(codeTypeFichier, referentielVersion);
+ tableNameToFdxTable.put(tableName, fdxTable);
+ }
+ return tableNameToFdxTable.get(tableName);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/favoritessearch/FavoriteSearchManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/favoritessearch/FavoriteSearchManagerImpl.java
new file mode 100644
index 0000000..be1b59b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/favoritessearch/FavoriteSearchManagerImpl.java
@@ -0,0 +1,72 @@
+package com.megatim.fdxconsultation.core.impl.favoritessearch;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.favoritessearch.FavoriteSearchManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.CriteriaEntityPersistedManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.favoritessearch.FavoriteSearchDAO;
+import com.megatim.fdxconsultation.dao.impl.utils.BaseEntityUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.FavoriteSearchDto;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class FavoriteSearchManagerImpl extends AbstractGenericManager<FavoriteSearch, Long> implements FavoriteSearchManager {
+
+ @Inject
+ private FavoriteSearchDAO dao;
+
+ @Inject
+ private CriteriaEntityPersistedManager criteriaEntityPersistedManager;
+
+ @Override
+ public GenericDAO<FavoriteSearch, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Transactional
+ @Override
+ public void add(FavoriteSearchDto favoriteSearchRequest, User connectedUser) {
+
+ String codeTypeFichier = favoriteSearchRequest.getCodeTypeFichier();
+ String referentielVersion = favoriteSearchRequest.getReferentielVersion();
+ CriteriaEntityFromView criteria = favoriteSearchRequest.getCriteria();
+
+ FavoriteSearch favoriteSearch = new FavoriteSearch();
+ favoriteSearch.setUserName(connectedUser.getUserName());
+ favoriteSearch.setLibelle(favoriteSearchRequest.getLibelle());
+ favoriteSearch.setCodeTypeFichier(codeTypeFichier);
+ favoriteSearch.setReferentielVersion(referentielVersion);
+ favoriteSearch.setCriteria(criteriaEntityPersistedManager.constructCriteriaPersisted(codeTypeFichier, referentielVersion, criteria));
+
+ BaseEntityUtil.setBaseEntityFieldsForAdd(favoriteSearch, connectedUser);
+
+ dao.save(favoriteSearch);
+ }
+
+ @Override
+ public List<FavoriteSearch> all(String userName) {
+ return dao.all(userName);
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<FavoriteSearch, Long> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java
new file mode 100644
index 0000000..86751bf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataConsumptionOperationsImpl.java
@@ -0,0 +1,168 @@
+/*
+ * 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());
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java
new file mode 100644
index 0000000..0ff490c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java
@@ -0,0 +1,128 @@
+/*
+ * 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.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
+import groovy.transform.Synchronized;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class DataInMemoryHandlerImpl implements DataInMemoryHandler {
+
+ private DataInMemory dataInMemory;
+
+ @Inject
+ ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private TypeFichierManager typeFichierManager;
+
+ @Inject
+ private ReferentielManager referentielManager;
+
+ @Inject
+ private NatureProductionFichierManager natureProdManager;
+
+ @Inject
+ private RoutageManager routageManager;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Override
+ @Synchronized
+ public void initializeDataInMemory() {
+ dataInMemory = new DataInMemory();
+ Referentiel referentielEncours = referentielManager.getReferentielEnCours();
+
+ if (referentielEncours != null) {
+ dataInMemory.setReferentielEnCours(referentielEncours);
+ dataInMemory.setCodeTypeFichierToTypeFichiers(getTypeFichiers());
+ dataInMemory.setTypeFichierToColumnDefinitions(getColumnsDefinitions(referentielEncours.getVersion()));
+ dataInMemory.setTypeFichierToNatureProductionsFichiers(getNatureProductionFichiers(referentielEncours.getVersion()));
+ getParticipantsForRoutages();
+ }
+ }
+
+ @Override
+ public DataInMemory getDataInMemory() {
+ return this.dataInMemory;
+ }
+
+ private void getParticipantsForRoutages() {
+ dataInMemory.getCodeTypeFichierToTypeFichiers().values().stream().forEach(t -> {
+ dataInMemory.getTypeFichierToParticipantsEnvoi()
+ .put(t.getCode(),
+ routageManager
+ .getParticipantsForSend(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
+ .stream()
+ .map(p -> p.getCode())
+ .collect(Collectors.toSet())
+ );
+
+ dataInMemory.getTypeFichierToParticipantsReception()
+ .put(t.getCode(),
+ routageManager
+ .getParticipantsForReceive(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
+ .stream()
+ .map(p -> p.getCode())
+ .collect(Collectors.toSet())
+ );
+
+ });
+
+ }
+ private Map<String, Map<String, ColumnDefinition>> getColumnsDefinitions(String referentielVersion) {
+ Map<String, Map<String, ColumnDefinition>> columnsDefinitionMap = new HashMap<>();
+ ColumnDefinitionSearch searchEntity = new ColumnDefinitionSearch();
+ searchEntity.setReferentielVersion(referentielVersion);
+
+ List<ColumnDefinition> columnsDefinition = columnDefinitionManager.getAll(searchEntity);
+ columnsDefinition.stream().forEach(c -> {
+ if (columnsDefinitionMap.containsKey(c.getCodeTypeFichier())) {
+ Map<String, ColumnDefinition> map = columnsDefinitionMap.get(c.getCodeTypeFichier());
+ map.put(c.getName(), c);
+ columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
+ } else {
+ Map<String, ColumnDefinition> map = new HashMap<>();
+ map.put(c.getName(), c);
+ columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
+ }
+ });
+ return columnsDefinitionMap;
+ }
+
+ private Map<String, TypeFichier> getTypeFichiers() {
+ return typeFichierManager.getAll(null).stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+ }
+
+ private Map<String, NatureProductionFichier> getNatureProductionFichiers(String referentielVersion) {
+ return natureProdManager.getByReferentiel(referentielVersion)
+ .stream()
+ .collect(Collectors.toMap(x -> x.getTypeFichier().getCode(), Function.identity()));
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/FdxConsultationTableInsert.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/FdxConsultationTableInsert.java
new file mode 100644
index 0000000..ec97ef5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/FdxConsultationTableInsert.java
@@ -0,0 +1,83 @@
+/*
+ * 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.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.tools.database.queries.CustomQueries;
+import com.megatim.fdxcommons.tools.database.queries.DeleteTableDataQuery;
+import com.megatim.fdxcommons.tools.database.queries.UpdateDataProductionQuery;
+import com.megatim.fdxcommons.tools.database.queries.metadata.FdxTableDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumnData;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableRow;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.IndexColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableInsert;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class FdxConsultationTableInsert implements TableInsert {
+
+ @Override
+ public Long insert(CommonDataProduction dataProduction, List<FdxTableRow> data, Connection connection) throws NamingException, SQLException, Exception {
+ FdxConsultationTable fdxConsTable = FdxConsultationTableFactory.createTable(dataProduction.getCodeTypeFichier(),
+ dataProduction.getReferentielVersion(),
+ connection);
+ FdxTableDefinition tableDefinition = fdxConsTable.tableDefinition(connection);
+ final String tableName = fdxConsTable.getTableName().name(connection);
+
+ if (dataProduction.getId() != null) {
+
+ if (!data.isEmpty()) {
+ Optional<FdxTableColumnData> optIndexData = data.get(0).getDataColumns().stream().filter(p -> p.getName().equals(new IndexColumnDefinition().name())).findFirst();
+
+ //Si fdx_index est trouvé dans les données existantes, alors la nouvelle dataproduction est une modification et donc on doit supprimer les anciennes avant l'insertion
+ if (optIndexData.isPresent() && new CustomQueries().fdxIndexExists((Long) optIndexData.get().getValue(), tableName, connection)) {
+ List<Long> indexes = data
+ .stream()
+ .flatMap(f -> f.getDataColumns().stream().filter(p -> p.getName().equals(new IndexColumnDefinition().name())))
+ .map(m -> (Long) m.getValue())
+ .collect(Collectors.toList());
+
+ //Supprimer les anciennes lignes de même index
+ new DeleteTableDataQuery(tableName, connection, deleteExistingIndexesCriterion(indexes)).execute();
+ }
+ fdxConsTable.insert(data, dataProduction.getId(), connection);
+ }
+
+ if (dataProduction.getStatutDataProduction().equals(StatutDataProduction.A_CONSOMMER)) {
+ new UpdateDataProductionQuery(dataProduction, connection).execute();
+
+ if (tableDefinition.isReferentiel()) {
+ new DeleteTableDataQuery(tableName, connection, whereDataProductionIsNotEqualCriterion(dataProduction.getId())).execute();
+ }
+ }
+ }
+ return dataProduction.getStatutDataProduction().equals(StatutDataProduction.A_CONSOMMER) ? dataProduction.getId() : null;
+ }
+
+ private QueryCriterion deleteExistingIndexesCriterion(List<Long> indexes) {
+ return new QueryCriterion(new IndexColumnDefinition().name(), indexes, Operateur.IN, null, Arrays.asList());
+ }
+
+ private QueryCriterion whereDataProductionIsNotEqualCriterion(Long dataProductionId) {
+ return new QueryCriterion(new DataProductionIdColumnDefinition().name(), dataProductionId, Operateur.NOT_EQUALS, null, Arrays.asList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/ReferentielConsumptionHelperImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/ReferentielConsumptionHelperImpl.java
new file mode 100644
index 0000000..11a7d52
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/ReferentielConsumptionHelperImpl.java
@@ -0,0 +1,92 @@
+package com.megatim.fdxconsultation.core.impl.helper;
+
+import com.megatim.fdxcommons.core.ifaces.customtypefichier.DynamicClassCreator;
+import com.megatim.fdxcommons.core.ifaces.db.ReferentielDataSaver;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.core.ifaces.helper.ReferentielConsumptionHelper;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.DynamicTableCreator;
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionFilter;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableauBordHandler;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import javax.annotation.Resource;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+import javax.transaction.Transactional;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.historique.ReferentielIntegrationHistoriqueManager;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import java.util.List;
+import com.megatim.fdxcommons.model.referentiel.historique.pojo.TableDefinitionFiltered;
+import java.util.ArrayList;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ReferentielConsumptionHelperImpl implements ReferentielConsumptionHelper {
+
+ @Inject
+ private DynamicClassCreator dynamicClassCreator;
+
+ @Inject
+ TableauBordHandler tableauBordHandler;
+
+ @Inject
+ ReferentielManager referentielManager;
+
+ @Inject
+ private DynamicTableCreator dynamicTableCreator;
+
+ @Inject
+ private ReferentielDataSaver referentielDataSaver;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Inject
+ private ReferentielIntegrationHistoriqueManager refIntegrationHistoriqueManager;
+
+ @Inject
+ TableDefinitionFilter tableDefinitionFilter;
+
+ @Override
+ @Transactional
+ public void consume(ReferentielToImportData referentielToImportData) throws Exception {
+ Referentiel previousRef = referentielManager.getReferentielEnCours();
+
+ //On enregistre les données de référentiel
+ referentielDataSaver.persist(referentielToImportData);
+
+ List<ReferentielIntegrationHistorique> refsHistoriqueIntegration = previousRef == null
+ ? new ArrayList<>()
+ : refIntegrationHistoriqueManager.suitableIntegrationHistorique(previousRef.getVersion());
+
+ TableDefinitionFiltered tableDefinitionFiltered = tableDefinitionFilter
+ .doFilter(previousRef == null ? null : previousRef.getVersion(),
+ referentielToImportData,
+ refsHistoriqueIntegration);
+
+ dynamicTableCreator.createDynamicTables(tableDefinitionFiltered.getTablesToCreate());
+ saveRefIntegrationHistorique(tableDefinitionFiltered.getRefIntegrationHistorique());
+
+ //Charger les nouvelles informations du référentiel dans un objet en mémoire
+ dataInMemoryHandler.initializeDataInMemory();
+
+ //Charger les nouvelles informations du référentiel dans un objet en mémoire
+ dataInMemoryHandler.initializeDataInMemory();
+
+ }
+
+ private void saveRefIntegrationHistorique(List<ReferentielIntegrationHistorique> refIntHistoriques) {
+ for (ReferentielIntegrationHistorique r : refIntHistoriques) {
+ refIntegrationHistoriqueManager.save(r);
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RequestHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RequestHandlerImpl.java
new file mode 100644
index 0000000..da21935
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RequestHandlerImpl.java
@@ -0,0 +1,105 @@
+package com.megatim.fdxconsultation.core.impl.helper;
+
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.helper.RequestHandler;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class RequestHandlerImpl implements RequestHandler {
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Inject
+ private TableauBordManager tableauBordManager;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Override
+ public Long countTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception {
+ return tableauBordManager.count(addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null));
+ }
+
+ @Override
+ @Transactional
+ public void deleteTableauBord(Long id) {
+ TableauBord tableauBord = tableauBordManager.getById(id);
+
+ if (tableauBord == null) {
+ throw new CommonRessourceNotFoundException("La ressource ayant l'identifiant " + id + " est introuvable");
+ }
+ tableauBordManager.delete(null, tableauBord);
+ }
+
+ @Override
+ public List<TableauBordSlimDto> findTableauBord(CriteriaFormRequest criteriaFormRequest) throws Exception {
+ List<TableauBord> tableauxBords = tableauBordManager.findAll(addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null),
+ Arrays.asList(),
+ Arrays.asList());
+ List<TableauBordSlimDto> dtos = new ArrayList<>();
+
+ tableauxBords.stream().forEach(t -> {
+ dtos.add(mapper.tableauBordToTableauBordSlimDto(t));
+ });
+ return dtos;
+ }
+
+ @Override
+ public List<TableauBordSlimDto> findTableauBordWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) throws Exception {
+
+
+ List<TableauBord> tableauxBords = tableauBordManager
+ .findWithPagination(
+ addCurrentReferentielToCriteria(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null),
+ fetchEagerFields,
+ Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)),
+ pageNumber,
+ pageSize);
+
+ List<TableauBordSlimDto> dtos = new ArrayList<>();
+
+ tableauxBords.stream().forEach(t -> {
+ dtos.add(mapper.tableauBordToTableauBordSlimDto(t));
+ });
+ return dtos;
+ }
+
+ private CriteriaEntityFromView addCurrentReferentielToCriteria(CriteriaEntityFromView criterion) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+
+ finalCriterion.getSubCriterias().add(currentReferentielCriterion());
+ finalCriterion.getSubCriterias().add(criterion);
+
+ return finalCriterion;
+ }
+
+ private CriteriaEntityFromView currentReferentielCriterion() {
+ Referentiel referentiel = dataInMemoryHandler.getDataInMemory().getReferentielEnCours();
+ return new CriteriaEntityFromView("referentiel.version",
+ referentiel != null ? referentiel.getVersion() : "",
+ Operateur.EQUALS);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RoutingCheckerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RoutingCheckerImpl.java
new file mode 100644
index 0000000..208d3d1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/RoutingCheckerImpl.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.core.impl.helper;
+
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+import com.megatim.fdxcommons.tools.exceptions.ApplicationForbidenException;
+import com.megatim.fdxconsultation.core.ifaces.helper.RoutingChecker;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class RoutingCheckerImpl implements RoutingChecker {
+
+ @Override
+ public void stopIfNotProducer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
+ if (!dataInMemory.getTypeFichierToParticipantsEnvoi().get(codeTypeFichier).contains(codeParticipant)) {
+ throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas producteur du type de fichier " + codeTypeFichier);
+ }
+ }
+
+ @Override
+ public void stopIfNotConsumer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
+ if (!dataInMemory.getTypeFichierToParticipantsReception().get(codeTypeFichier).contains(codeParticipant)) {
+ throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas consommateur du type de fichier " + codeTypeFichier);
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java
new file mode 100644
index 0000000..3dce036
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/TableauBordHandlerImpl.java
@@ -0,0 +1,276 @@
+package com.megatim.fdxconsultation.core.impl.helper;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.TableauBordHandler;
+import com.megatim.fdxconsultation.core.ifaces.stats.CriteriaEntityPersistedManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableConfigurationManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordColumnManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordHandlerImpl implements TableauBordHandler {
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private CriteriaEntityPersistedManager criteriaEntityPersistedManager;
+
+ @Inject
+ TableauBordManager tableauBordManager;
+
+ @Inject
+ private TableConfigurationManager tableConfigurationManager;
+
+ @Inject
+ private TableauBordColumnManager tableauBordColumnManager;
+
+ @Override
+ public void reconduireTableauBordValides(Referentiel previousRef, Referentiel newRef, Set<String> typeFichiersToMigrate) {
+ List<TableauBord> prevRefTableauBords = tableauBordManager.findByReferentiel(previousRef.getVersion());
+
+ try {
+ for (TableauBord t : prevRefTableauBords) {
+ if (typeFichiersToMigrate.contains(t.getTypeFichier().getCode())) {
+ createNewTableauBord(t, newRef);
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ public TableauBordDto tableauBordToTableauBordDto(TableauBord tableauBord) {
+ TableauBordDto dto = new TableauBordDto();
+
+ dto.setId(tableauBord.getId());
+ dto.setDescription(tableauBord.getDescription());
+ dto.setTypeFichier(commonMapper.typeFichierToTypeFichierSlimDto(tableauBord.getTypeFichier()));
+ dto.setTypeConfiguration(tableauBord.getTypeConfiguration());
+
+ Set<TableConfigurationDto> tableConfigurationDtos = new HashSet<>();
+ tableauBord.getTableConfigurations().stream().forEach(t -> tableConfigurationDtos.add(tableConfigurationToTableConfigurationDto(t)));
+ dto.setTableConfigurations(tableConfigurationDtos);
+
+ return dto;
+ }
+
+ /**
+ * Méthode permettant de passer de TableauBordDto à TableauBord
+ *
+ * @param dto
+ * @param referentiel
+ * @return
+ */
+ @Override
+ public TableauBord tableauBordDtoToTableauBord(TableauBordDto dto, Referentiel referentiel) {
+ TableauBord tableauBord = new TableauBord();
+
+ tableauBord.setDescription(dto.getDescription());
+ tableauBord.setTypeFichier(commonMapper.typeFichierSlimDtoToTypeFichier(dto.getTypeFichier()));
+ tableauBord.setReferentiel(referentiel);
+
+ Set<TableConfiguration> tableConfigurations = new HashSet<>();
+ dto.getTableConfigurations().stream().forEach(t -> tableConfigurations.add(tableConfigurationDtoToTableConfiguration(t, dto.getTypeFichier().getCode(), referentiel.getVersion())));
+ tableauBord.setTableConfigurations(tableConfigurations);
+
+ return tableauBord;
+ }
+
+ @Override
+ public TableConfigurationDto tableConfigurationToTableConfigurationDto(TableConfiguration tableConf) {
+ TableConfigurationDto dto = new TableConfigurationDto();
+ dto.setCriterion(criteriaEntityPersistedToCriteriaEntityFromView(tableConf.getCriterion()));
+ dto.setColor(tableConf.getColor());
+ dto.setFonctionAggregation(tableConf.getFonctionAggregation());
+ dto.setGroupingColumns(mapper.setTableauBordColumnToSetTableauBordColumnDto(tableConf.getGroupingColumns()));
+ dto.setLibelle(tableConf.getLibelle());
+ dto.setTargetedColumn(mapper.tableauBordColumnToTableauBordColumnDto(tableConf.getTargetedColumn()));
+ dto.setTypeResultatConfiguration(tableConf.getTypeResultatConfiguration());
+ dto.setColor(tableConf.getColor());
+
+ return dto;
+ }
+
+ @Override
+ public void stopIfUserSpecificTableauBordExists(String codeTypeFichier, String referentielVersion, String userName) throws CommonApplicationValidationException, Exception {
+
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ criterion.setSubCriterias(Arrays.asList(
+ new CriteriaEntityFromView("typeFichier.code", codeTypeFichier, Operateur.EQUALS),
+ new CriteriaEntityFromView("user.userName", userName, Operateur.EQUALS),
+ new CriteriaEntityFromView("referentiel.version", referentielVersion, Operateur.EQUALS),
+ new CriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.USER_SPECIFIC, Operateur.EQUALS)));
+
+ List<TableauBord> tb = tableauBordManager.findAll(criterion, Arrays.asList(), Arrays.asList());
+ if (tb.stream().findFirst().isPresent()) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour le typefichier " + codeTypeFichier + ", l'utilisateur" + userName + " et le référentiel " + referentielVersion);
+ }
+ }
+
+ @Override
+ public void stopIfGlobaleTableauBordExists(String codeTypeFichier, String referentielVersion) throws Exception {
+
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ criterion.setSubCriterias(Arrays.asList(
+ new CriteriaEntityFromView("typeFichier.code", codeTypeFichier, Operateur.EQUALS),
+ new CriteriaEntityFromView("referentiel.version", referentielVersion, Operateur.EQUALS),
+ new CriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.GLOBAL, Operateur.EQUALS)
+ ));
+
+ if (tableauBordManager.findAll(criterion, Arrays.asList(), Arrays.asList()).stream().findFirst().isPresent()) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour ce typefichier et ce référentiel");
+ }
+ }
+
+ private void createNewTableauBord(TableauBord t, Referentiel referentiel) throws Exception {
+
+ try {
+ if (t.getTypeConfiguration().equals(TypeConfigurationTableauBord.USER_SPECIFIC)) {
+ stopIfUserSpecificTableauBordExists(t.getTypeFichier().getCode(), referentiel.getVersion(), t.getUser().getUserName());
+ } else {
+ stopIfGlobaleTableauBordExists(t.getTypeFichier().getCode(), referentiel.getVersion());
+ }
+ TableauBord tableauBord = tableauBord(t, referentiel);
+ tableauBordManager.save(tableauBord);
+ } catch (Exception ex) {
+ Logger.getLogger(TableauBordHandlerImpl.class.getSimpleName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ private TableauBord tableauBord(TableauBord t, Referentiel referentiel) {
+ TableauBord tableauBord = new TableauBord();
+ tableauBord.setReferentiel(referentiel);
+ tableauBord.setTypeFichier(t.getTypeFichier());
+ tableauBord.setDescription(t.getDescription());
+ tableauBord.setUser(t.getUser());
+ tableauBord.setTypeConfiguration(t.getTypeConfiguration());
+
+ for (TableConfiguration tc : t.getTableConfigurations()) {
+ TableConfiguration tableConf = new TableConfiguration();
+ tableConf.setLibelle(tc.getLibelle());
+ tableConf.setFonctionAggregation(tc.getFonctionAggregation());
+ tableConf.setTargetedColumn(newTableauBordColumn(tc.getTargetedColumn()));
+ tableConf.setTypeResultatConfiguration(tc.getTypeResultatConfiguration());
+ tableConf.setFonctionAggregationCriterion(tc.getFonctionAggregationCriterion());
+
+ CriteriaEntityPersisted cr = reconductCriteria(tc.getCriterion());
+ tableConf.setCriterion(cr);
+
+ for (TableauBordColumn tbc : tc.getGroupingColumns()) {
+ tableConf.getGroupingColumns().add(newTableauBordColumn(tbc));
+ }
+ tableauBord.getTableConfigurations().add(tableConf);
+ }
+
+ return tableauBord;
+ }
+
+ private TableauBordColumn newTableauBordColumn(TableauBordColumn column) {
+ if (column == null) {
+ return null;
+ }
+ TableauBordColumn newColumn = new TableauBordColumn();
+ newColumn.setName(column.getName());
+ newColumn.setTypeDonnee(column.getTypeDonnee());
+
+ return newColumn;
+ }
+
+ private TableConfiguration tableConfigurationDtoToTableConfiguration(TableConfigurationDto dto, String codeTypeFichier, String referentielVersion) {
+ TableConfiguration tableConf = new TableConfiguration();
+ tableConf.setFonctionAggregation(dto.getFonctionAggregation());
+ tableConf.setLibelle(dto.getLibelle());
+ tableConf.setColor(dto.getColor());
+ tableConf.setTargetedColumn(mapper.tableauBordColumnDtoToTableauBordColumn(dto.getTargetedColumn()));
+ tableConf.setGroupingColumns(mapper.setTableauBordColumnDtoToSetTableauBordColumn(dto.getGroupingColumns()));
+ tableConf.setTypeResultatConfiguration(dto.getTypeResultatConfiguration() != null ? dto.getTypeResultatConfiguration() : TypeResultatConfiguration.RECAPITULATIF);
+
+ CriteriaEntityPersisted criterionPersisted = criteriaEntityPersistedManager.constructCriteriaPersisted(codeTypeFichier, referentielVersion, dto.getCriterion());
+ tableConf.setCriterion(criterionPersisted);
+
+ return tableConf;
+ }
+
+ private CriteriaEntityPersisted reconductCriteria(CriteriaEntityPersisted criterion) {
+
+ if (criterion != null) {
+
+ if (!criterion.getSubCriterias().isEmpty()) {
+
+ CriteriaEntityPersisted finalCriterion = new CriteriaEntityPersisted();
+ List<CriteriaEntityPersisted> subCriteria = new ArrayList<>(criterion.getSubCriterias());
+ criterion.setSubCriterias(new ArrayList<>());
+ subCriteria.stream().forEach(c -> finalCriterion.getSubCriterias().add(reconductCriteria(c)));
+
+ return finalCriterion;
+
+ } else {
+
+ CriteriaEntityPersisted finalCriterion = new CriteriaEntityPersisted();
+ finalCriterion.setNomColonne(criterion.getNomColonne());
+ finalCriterion.setOperateur(criterion.getOperateur());
+ finalCriterion.setCriteriaLogicConnector(criterion.getCriteriaLogicConnector());
+
+ finalCriterion.setCriteriaDateListValue(criterion.getCriteriaDateListValue());
+ finalCriterion.setCriteriaDateLowerBound(criterion.getCriteriaDateLowerBound());
+ finalCriterion.setCriteriaDateUpperBound(criterion.getCriteriaDateUpperBound());
+ finalCriterion.setCriteriaDateValue(criterion.getCriteriaDateValue());
+
+ finalCriterion.setCriteriaNumericListValue(criterion.getCriteriaNumericListValue());
+ finalCriterion.setCriteriaNumericValue(criterion.getCriteriaNumericValue());
+ finalCriterion.setCriteriaNumericLowerBound(criterion.getCriteriaNumericLowerBound());
+ finalCriterion.setCriteriaNumericUpperBound(criterion.getCriteriaNumericUpperBound());
+
+ finalCriterion.setCriteriaStringListValue(criterion.getCriteriaStringListValue());
+ finalCriterion.setCriteriaStringValue(criterion.getCriteriaStringValue());
+ finalCriterion.setCriteriaStringLowerBound(criterion.getCriteriaStringLowerBound());
+ finalCriterion.setCriteriaStringUpperBound(criterion.getCriteriaStringUpperBound());
+
+ return finalCriterion;
+ }
+
+ } else {
+
+ return null;
+
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnCreatorImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnCreatorImpl.java
new file mode 100644
index 0000000..183311e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnCreatorImpl.java
@@ -0,0 +1,77 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionUpdateIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateCreationColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DateMiseAJourColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+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.persistence.Tuple;
+import javax.sql.DataSource;
+import com.megatim.fdxcommons.core.ifaces.integration.AppColumnCreator;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class AppColumnCreatorImpl implements AppColumnCreator {
+
+ @Inject
+ ColumnDefinitionManager columnDefinitionManager;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void create() {
+ List<Tuple> refVersionAndTypeFichier = columnDefinitionManager.byRefVersionAndByTypeFichier();
+ final String encoursProductionColumnName = new EnCoursProductionColumnDefinition().name();
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ refVersionAndTypeFichier.stream().forEach(r -> {
+ FdxConsultationTable consTable = new FdxConsultationTable((String) r.get(0), (String) r.get(1));
+
+ try {
+ for (AppColumnDefinition appColumn : columnsToAdd()) {
+ if (consTable.checkIfTableExists(connection) && !consTable.checkIfColumnExists(connection, appColumn.name())) {
+
+ consTable.addAppColumn(connection, appColumn);
+ }
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ });
+ } catch (SQLException ex) {
+ Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ private List<AppColumnDefinition> columnsToAdd() {
+ return new ArrayList<>(Arrays.asList(
+ new DateCreationColumnDefinition(),
+ new DateMiseAJourColumnDefinition(),
+ new DataProductionUpdateIdColumnDefinition()
+ ));
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnDeleterImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnDeleterImpl.java
new file mode 100644
index 0000000..4738a8c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/AppColumnDeleterImpl.java
@@ -0,0 +1,74 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.contrat.AppColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.EnCoursProductionColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.integration.AppColumnDeleter;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+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.persistence.Tuple;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class AppColumnDeleterImpl implements AppColumnDeleter {
+
+ @Inject
+ ColumnDefinitionManager columnDefinitionManager;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void delete() {
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ List<Tuple> refVersionAndTypeFichier = columnDefinitionManager.byRefVersionAndByTypeFichier();
+
+ refVersionAndTypeFichier.stream().forEach(r -> {
+ FdxConsultationTable consTable = new FdxConsultationTable((String) r.get(0), (String) r.get(1));
+
+ try {
+ for (AppColumnDefinition appColumn : columnsToDrop()) {
+ if (consTable.checkIfTableExists(connection)) {
+ if (consTable.checkIfConstraintExists(connection)) {
+ consTable.dropPkConstraint(connection);
+ }
+ if (consTable.checkIfColumnExists(connection, appColumn.name())) {
+ consTable.dropAppColumn(connection, appColumn);
+ }
+ consTable.addPkConstraint(connection);
+ }
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ });
+ } catch (SQLException ex) {
+ Logger.getLogger(AppColumnCreatorImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ private List<AppColumnDefinition> columnsToDrop() {
+ return new ArrayList<>(Arrays.asList(
+ new EnCoursProductionColumnDefinition()
+ ));
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/ColumnDefinitionManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/ColumnDefinitionManagerImpl.java
new file mode 100644
index 0000000..8f6764d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/ColumnDefinitionManagerImpl.java
@@ -0,0 +1,60 @@
+package com.megatim.fdxconsultation.core.impl.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.integration.ColumnDefinitionDAO;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ColumnDefinitionManagerImpl implements ColumnDefinitionManager {
+
+ @EJB
+ ColumnDefinitionDAO dao;
+
+ @Override
+ public ColumnDefinition findByNameAndReferentielAndTypeFichier(String columnName, String referentielVersion, String codeTypeFichier) {
+ return getDao().findByNameAndReferentielAndTypeFichier(columnName, referentielVersion, codeTypeFichier);
+ }
+
+ @Override
+ public List<ColumnDefinition> findByReferentiel(String referentielVersion) {
+ return getDao().findByReferentiel(referentielVersion);
+ }
+
+ @Override
+ public List<ColumnDefinition> findByReferentielAndTypeFichier(String referentielVersion, String codeTypeFichier) {
+ return getDao().findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier);
+ }
+
+ @Override
+ public Set<String> findTypeFichierByReferentiel(String referentielVersion) {
+ return getDao().findTypeFichierByReferentiel(referentielVersion);
+ }
+
+ @Override
+ public ColumnDefinitionDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public Map<String, ColumnDefinition> getColumnsDefimitionMap(String codeTypeFichier, String referentielVersion) {
+ List<ColumnDefinition> columnsDef = findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier);
+ return columnsDef.stream().collect(Collectors.toMap(c -> c.getName(), Function.identity()));
+ }
+
+ @Override
+ public List<Tuple> byRefVersionAndByTypeFichier() {
+ return dao.byRefVersionAndByTypeFichier();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/DynamicTableCreatorImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/DynamicTableCreatorImpl.java
new file mode 100644
index 0000000..03fee1b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/DynamicTableCreatorImpl.java
@@ -0,0 +1,38 @@
+package com.megatim.fdxconsultation.core.impl.integration;
+
+import com.megatim.fdxcommons.core.ifaces.helper.referentiel.DynamicTableCreator;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.enterprise.context.Dependent;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class DynamicTableCreatorImpl implements DynamicTableCreator {
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void createDynamicTables(List<TableDefinition> tableDefinitions) throws Exception {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ for (TableDefinition tableDefinition : tableDefinitions) {
+ FdxConsultationTableFactory.createTable(tableDefinition.getCodeTypeFichier(),
+ tableDefinition.getReferentielVersion(),
+ connection)
+ .createTable(tableDefinition.getColumnDefinitions(), connection);
+
+ }
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/EchecIntegrationManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/EchecIntegrationManagerImpl.java
new file mode 100644
index 0000000..5f3ecba
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/EchecIntegrationManagerImpl.java
@@ -0,0 +1,26 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxconsultation.core.ifaces.integration.EchecIntegrationManager;
+import com.megatim.fdxconsultation.dao.ifaces.integration.EchecIntegrationDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class EchecIntegrationManagerImpl implements EchecIntegrationManager{
+ @EJB
+ private EchecIntegrationDAO dao;
+
+ @Override
+ public EchecIntegrationDAO getDao() {
+ return dao;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/TableDefinitionManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/TableDefinitionManagerImpl.java
new file mode 100644
index 0000000..b0c023a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/integration/TableDefinitionManagerImpl.java
@@ -0,0 +1,34 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.integration.TableDefinitionDAO;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import com.megatim.fdxcommons.model.integration.TableDefinitionId;
+import com.megatim.fdxconsultation.core.ifaces.integration.TableDefinitionManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableDefinitionManagerImpl implements TableDefinitionManager {
+
+ @EJB
+ TableDefinitionDAO dao;
+
+ @Override
+ public TableDefinition getById(TableDefinitionId id, User connectedUser) {
+ return getDao().getById(id);
+ }
+
+ @Override
+ public TableDefinitionDAO getDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/ApiUserActionLogManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/ApiUserActionLogManagerImpl.java
new file mode 100644
index 0000000..f13f548
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/ApiUserActionLogManagerImpl.java
@@ -0,0 +1,100 @@
+package com.megatim.fdxconsultation.core.impl.log;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.core.ifaces.log.ApiUserActionLogManager;
+import com.megatim.fdxconsultation.dao.ifaces.log.ApiUserActionLogDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatData;
+import com.megatim.fdxconsultation.model.dto.log.UserActionStatDto;
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.log.ApiUserActionLogReporting;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ApiUserActionLogManagerImpl implements ApiUserActionLogManager {
+
+ @EJB
+ private ApiUserActionLogDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Override
+ public ApiUserActionLogDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<ApiUserActionLogReporting> getClazz() {
+ return ApiUserActionLogReporting.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<ApiUserActionLogReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToApiUserActionLogReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public List<UserActionStatDto> getByStatut(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return dao.getByStatut(apiUserActionSummarySearch);
+ }
+
+ @Override
+ public List<UserActionStatData> getByStatutAndUserName(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return dao.getByStatutAndUserName(apiUserActionSummarySearch);
+ }
+
+ @Override
+ public List<UserActionStatData> getByStatutAndPath(ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return dao.getByStatutAndPath(apiUserActionSummarySearch);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/UserActionLogManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/UserActionLogManagerImpl.java
new file mode 100644
index 0000000..2ce6541
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/log/UserActionLogManagerImpl.java
@@ -0,0 +1,110 @@
+/*
+ * 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.log;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+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.context.AppContext;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.dao.ifaces.log.UserActionLogDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class UserActionLogManagerImpl implements UserActionLogManager {
+
+ @EJB
+ private UserActionLogDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Override
+ public UserActionLogDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public Class<UserActionLogDto> getClazz() {
+ return UserActionLogDto.class;
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<UserActionLogDto> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return mapper.userActionLogListToUserActionLogDtoList(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public void log(HttpHeaders headers, @Context HttpServletRequest request, String message, String utilisateur) {
+ Map<String, String> map = CommonTools.recupererInfosRequete(headers, request);
+ UserActionLog log = new UserActionLog();
+ log.setDateAction(LocalDateTime.now());
+ log.setMessage(message);
+ log.setUserAgent(map.get(AppCommonContext.REQUETE_HTTP_CLIENT));
+ log.setIpAddress(map.get(AppCommonContext.REQUETE_HTTP_ADRESSE_IP));
+ log.setHttpMethod(map.get(AppCommonContext.REQUETE_HTTP_METHODE));
+ log.setRelativePath(map.get(AppCommonContext.REQUETE_HTTP_PATH));
+ log.setUserName(utilisateur);
+ log.setStatus(200);
+ log.setMotif(log.getStatus() != null ? log.getStatus().toString()+" ("+AppContext.registre_codes_http.get(log.getStatus().toString())+")" : null);
+ save(log);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/message/systeme/MessageSystemeManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/message/systeme/MessageSystemeManagerImpl.java
new file mode 100644
index 0000000..2e4ee91
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/message/systeme/MessageSystemeManagerImpl.java
@@ -0,0 +1,136 @@
+package com.megatim.fdxconsultation.core.impl.message.systeme;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxconsultation.core.ifaces.message.systeme.MessageSystemeManager;
+import com.megatim.fdxconsultation.dao.ifaces.message.systeme.MessageSystemeDAO;
+import com.megatim.fdxconsultation.model.message.systeme.*;
+import com.megatim.fdxcommons.model.enumeration.*;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.MessageSystemeDto;
+import java.util.ArrayList;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+@Transactional
+@Dependent
+public class MessageSystemeManagerImpl extends AbstractGenericManager<MessageSysteme, Long> implements MessageSystemeManager {
+
+ @Inject
+ protected MessageSystemeDAO dao;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ public MessageSystemeManagerImpl() {
+ }
+
+ @Override
+ public GenericDAO<MessageSysteme, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public void ajouter(TypeMessageSysteme typeMessageSysteme, TypeIdMessageSysteme typeIdMessageSysteme, String contenu, User utilisateur) {
+ if(UserSesionApplication.siUtilisateurConnecte(utilisateur)){
+ dao.ajouter(typeMessageSysteme, typeIdMessageSysteme, contenu, utilisateur);
+ }
+ }
+
+ @Override
+ public List<MessageSysteme> recupererTousLesMessages(User user) {
+
+ //Variables
+ List<MessageSysteme> messages = dao.findByProperty("utilisateur", user);
+
+ //Si null
+ if(messages == null){
+
+ //On crée une instance
+ messages = new ArrayList<MessageSysteme>();
+
+ }
+
+ return messages;
+ }
+
+ @Override
+ public MessageSystemeDto recupererUnMessageSystemeDto(User user) {
+
+ //Variables
+ List<MessageSysteme> messages = recupererTousLesMessages(user);
+ MessageSystemeDto messageSystemeDto = null;
+ MessageSysteme message = null;
+
+ //Si null
+ if(messages != null && !messages.isEmpty()){
+
+ //On recupère le message
+ message = messages.get(0);
+
+ //On recupère un message
+ messageSystemeDto = mapper.messageSystemeToMessageSystemeDto(message);
+
+ //On supprime le message
+ delete(message.getId());
+ }
+
+ return messageSystemeDto;
+ }
+
+ @Override
+ public void supprimerTousLesMessageSystemeUtilisateur(User utilisateur) {
+
+ //Variables
+ List<MessageSysteme> messages = recupererTousLesMessages(utilisateur);
+
+ //Si non null
+ if(messages != null){
+
+ //On parcourt les messages
+ for(MessageSysteme message : messages){
+
+ //On supprime le message
+ delete(message.getId());
+
+ }
+
+ }
+
+ }
+
+ @Override
+ public boolean siMessageTypeActionSystemeExiste(TypeActionSysteme typeActionSysteme, User utilisateur) {
+
+ //Variables
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ List<MessageSysteme> messages = null;
+ boolean bool = false;
+
+ //On ajoute les critères de recherche
+ requeteur.addEq("typeActionSysteme", typeActionSysteme);
+ requeteur.addEq("utilisateur", utilisateur);
+
+ //On execute la requete
+ messages = filter(requeteur.getPredicats(), null, null, 0, 1);
+
+ //Si non vide
+ if(messages != null && !messages.isEmpty()){
+ bool = true;
+ }else{
+ bool = false;
+ }
+
+ return bool;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ApplicationSourceManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ApplicationSourceManagerImpl.java
new file mode 100644
index 0000000..e08a54a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ApplicationSourceManagerImpl.java
@@ -0,0 +1,39 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ApplicationSourceManager;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ApplicationSourceDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ApplicationSourceManagerImpl implements ApplicationSourceManager {
+
+ @EJB
+ private ApplicationSourceDAO dao;
+
+ @Override
+ public ApplicationSourceDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public Class<ApplicationSource> getManagedEntityClass() {
+ return ApplicationSource.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ExtensionFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ExtensionFichierManagerImpl.java
new file mode 100644
index 0000000..0a31e5f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ExtensionFichierManagerImpl.java
@@ -0,0 +1,136 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ExtensionFichierManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ExtensionFichierDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ExtensionFichierReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ExtensionFichierManagerImpl implements ExtensionFichierManager {
+
+ @EJB
+ private ExtensionFichierDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public ExtensionFichierDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "extension";
+ }
+
+ @Override
+ public Class<ExtensionFichierReporting> getClazz() {
+ return ExtensionFichierReporting.class;
+ }
+
+ @Override
+ public List<ExtensionFichierReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToExtensionFichierReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<ExtensionFichier> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(ExtensionFichier.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité ExtensionFichier : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public List<ExtensionFichier> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(ExtensionFichier.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité ExtensionFichier : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<ExtensionFichier> getManagedEntityClass() {
+ return ExtensionFichier.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeNoeudManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeNoeudManagerImpl.java
new file mode 100644
index 0000000..9173bff
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeNoeudManagerImpl.java
@@ -0,0 +1,132 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeNoeudManager;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.GroupeNoeudDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeNoeudReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class GroupeNoeudManagerImpl implements GroupeNoeudManager {
+
+ @EJB
+ private GroupeNoeudDAO dao;
+
+ @Override
+ public GroupeNoeudDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public List<GroupeNoeudReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToGroupeNoeudReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<GroupeNoeudReporting> getClazz() {
+ return GroupeNoeudReporting.class;
+ }
+
+ @Override
+ public List<GroupeNoeud> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(GroupeNoeud.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité GroupeNoeud : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<GroupeNoeud> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(GroupeNoeud.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité GroupeNoeud : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<GroupeNoeud> getManagedEntityClass() {
+ return GroupeNoeud.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeParticipantManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeParticipantManagerImpl.java
new file mode 100644
index 0000000..c8f54e3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/GroupeParticipantManagerImpl.java
@@ -0,0 +1,138 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeParticipantManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.GroupeParticipantDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeParticipantReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+@Transactional
+public class GroupeParticipantManagerImpl implements GroupeParticipantManager {
+
+ @EJB
+ private GroupeParticipantDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public GroupeParticipantDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public List<GroupeParticipantReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToGroupeParticipantReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<GroupeParticipantReporting> getClazz() {
+ return GroupeParticipantReporting.class;
+ }
+
+ @Override
+ public List<GroupeParticipant> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(GroupeParticipant.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité GroupeParticipant : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<GroupeParticipant> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(GroupeParticipant.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité GroupeParticipant : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<GroupeParticipant> getManagedEntityClass() {
+ return GroupeParticipant.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/NoeudManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/NoeudManagerImpl.java
new file mode 100644
index 0000000..c42b48c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/NoeudManagerImpl.java
@@ -0,0 +1,132 @@
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.NoeudManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.NoeudDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.NoeudReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class NoeudManagerImpl implements NoeudManager {
+
+ @EJB
+ private NoeudDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public NoeudDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public List<NoeudReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToNoeudReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<NoeudReporting> getClazz() {
+ return NoeudReporting.class;
+ }
+
+ @Override
+ public List<Noeud> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Noeud.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Noeud : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<Noeud> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Noeud.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Noeud : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<Noeud> getManagedEntityClass() {
+ return Noeud.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ParticipantManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ParticipantManagerImpl.java
new file mode 100644
index 0000000..cce1ab1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ParticipantManagerImpl.java
@@ -0,0 +1,143 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ParticipantManager;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ParticipantDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ParticipantReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ParticipantManagerImpl implements ParticipantManager {
+
+ @EJB
+ private ParticipantDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public ParticipantDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public List<ParticipantReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToParticipantReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<ParticipantReporting> getClazz() {
+ return ParticipantReporting.class;
+ }
+
+ @Override
+ public List<Participant> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Participant.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Participant : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<Participant> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Participant.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Participant : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<Participant> getManagedEntityClass() {
+ return Participant.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public PaginationWithSearchEnityDAO<Participant, String, ParticipantSearch> getPaginationDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/PaysManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/PaysManagerImpl.java
new file mode 100644
index 0000000..c4afe46
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/PaysManagerImpl.java
@@ -0,0 +1,127 @@
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.PaysManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.PaysDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.PaysReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class PaysManagerImpl implements PaysManager {
+
+ @EJB
+ private PaysDAO dao;
+
+ @Override
+ public PaysDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public Class<PaysReporting> getClazz() {
+ return PaysReporting.class;
+ }
+
+ @Override
+ public List<PaysReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToPaysReporting(findAll(criterion, Arrays.asList("participants"), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public List<Pays> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Pays.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Pays : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+ } catch (Exception ex) {
+ Logger.getLogger(PaysManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public List<Pays> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Pays.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Pays : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<Pays> getManagedEntityClass() {
+ return Pays.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ReferentielManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ReferentielManagerImpl.java
new file mode 100644
index 0000000..767da07
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ReferentielManagerImpl.java
@@ -0,0 +1,162 @@
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ReferentielReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.SecurityContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ReferentielManagerImpl implements ReferentielManager {
+
+ @EJB
+ private ReferentielDAO dao;
+
+ @Context
+ private SecurityContext securityContext;
+
+ @Override
+ public ReferentielDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "version";
+ }
+
+ @Override
+ public PaginationWithSearchEnityDAO<Referentiel, String, ReferentielSearch> getPaginationDao() {
+ return dao;
+ }
+
+ @Override
+ public List<ReferentielReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToReferentielReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<ReferentielReporting> getClazz() {
+ return ReferentielReporting.class;
+ }
+
+ @Override
+ public List<Referentiel> findByStatutReferentiel(StatutReferentiel statutReferentiel) {
+ return getDao().findByStatutReferentiel(statutReferentiel);
+ }
+
+ @Override
+ public Referentiel getReferentielEnCours() {
+ return getDao().getReferentielEnCours();
+ }
+
+ @Override
+ public List<Referentiel> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Referentiel.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Referentiel : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateGeneration", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<Referentiel> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+
+ System.out.println("The context is null " + securityContext);
+ if (securityContext != null) {
+ System.out.println("The principal name is " + securityContext.getUserPrincipal().getName());
+ }
+
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Referentiel.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Referentiel : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateGeneration", OrderByType.DESC)), pageNumber, pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<Referentiel> getManagedEntityClass() {
+ return Referentiel.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public void archiverReferentielEncours() {
+ dao.archiverReferentielEncours();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/RoutageManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/RoutageManagerImpl.java
new file mode 100644
index 0000000..5b3ce11
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/RoutageManagerImpl.java
@@ -0,0 +1,173 @@
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.RoutageDAO;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.referentiel.RoutageReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class RoutageManagerImpl implements RoutageManager {
+
+ @EJB
+ private RoutageDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public RoutageDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "typeFichier";
+ }
+
+ @Override
+ public List<RoutageReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToRoutageReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<RoutageReporting> getClazz() {
+ return RoutageReporting.class;
+ }
+
+ @Override
+ public List<Routage> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Routage.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Routage : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(RoutageManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<Routage> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(Routage.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Routage : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize);
+
+ } catch (Exception ex) {
+ Logger.getLogger(RoutageManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<Routage> getManagedEntityClass() {
+ return Routage.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public CriteriaFormRequest getExportCustumOneCriterion(String codeTypeFichier, String versionReferentiel) {
+
+ /* Variables */
+ CriteriaFormRequest formRequest = new CriteriaFormRequest();
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+
+ /* On ajoute les critères */
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeFichier.code", codeTypeFichier, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("referentiel.version", versionReferentiel, Operateur.EQUALS));
+
+ /* On set le le critère de recherche */
+ formRequest.setCriteria(finalCriterion);
+
+ /* On retour le critère */
+ return formRequest;
+
+ }
+
+ @Override
+ public List<Participant> getParticipantsForSend(String versionReferentiel, String codeTypeFichier) {
+ return getDao().getParticipantsForSend(versionReferentiel, codeTypeFichier);
+ }
+
+ @Override
+ public List<Participant> getParticipantsForReceive(String versionReferentiel, String codeTypeFichier) {
+ return getDao().getParticipantForReceive(versionReferentiel, codeTypeFichier);
+ }
+
+ private CriteriaEntityFromView newCriteriaEntityFromView(String nomColonne, Object criteriaValue, Operateur operateur) {
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setNomColonne(nomColonne);
+ criterion.setCriteriaValue(criteriaValue);
+ criterion.setOperateur(operateur);
+
+ return criterion;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/StructureLigneManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/StructureLigneManagerImpl.java
new file mode 100644
index 0000000..4c4b741
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/StructureLigneManagerImpl.java
@@ -0,0 +1,39 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.StructureLigneManager;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.StructureLigneDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class StructureLigneManagerImpl implements StructureLigneManager {
+
+ @EJB
+ private StructureLigneDAO dao;
+
+ @Override
+ public StructureLigneDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public Class<StructureLigne> getManagedEntityClass() {
+ return StructureLigne.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/TypeFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/TypeFichierManagerImpl.java
new file mode 100644
index 0000000..62a1019
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/TypeFichierManagerImpl.java
@@ -0,0 +1,178 @@
+package com.megatim.fdxconsultation.core.impl.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.TypeFichierConsultationDAO;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.TypeFichierDAO;
+import java.util.ArrayList;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.reporting.model.referentiel.TypeFichierReporting;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.tools.CommonsToolsEntity;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TypeFichierManagerImpl implements TypeFichierManager {
+
+ @EJB
+ private TypeFichierConsultationDAO dao;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Override
+ public TypeFichierDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "code";
+ }
+
+ @Override
+ public List<TypeFichierReporting> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return CommonsToolsEntity.convertToTypeFichierReporting(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<TypeFichierReporting> getClazz() {
+ return TypeFichierReporting.class;
+ }
+
+ @Override
+ public Map<String, List<String>> particpantToFichierDto(String username) {
+ Map<String, List<String>> particpantToFichierDto = new HashMap<>();
+ dao.getParticpantToFichierDto(username).forEach(p -> {
+ String key = p.getCodeParticipant();
+ List<String> value = particpantToFichierDto.get(key);
+ if (value == null) {
+ value = new ArrayList<>();
+ }
+ value.add(p.getCodeFichier());
+ particpantToFichierDto.put(key, value);
+ });
+ return particpantToFichierDto;
+ }
+
+ @Override
+ public List<TypeFichier> findAll(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(TypeFichier.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité TypeFichier : "
+ + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findAll(criterion, fetchEagerFields, Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)));
+
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public List<TypeFichier> findWithPagination(CriteriaFormRequest criteriaFormRequest, List<String> fetchEagerFields, int pageNumber, int pageSize) {
+ try {
+ List<String> fieldsNotFound = CommonTools.checkIfEntityField(TypeFichier.class, fetchEagerFields);
+ if (!fieldsNotFound.isEmpty()) {
+ throw new Exception("Les champs suivants n'appartiennent pas à l'entité Routage : " + fieldsNotFound.stream().collect(Collectors.joining(",", "{", "}")));
+ }
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return getDao().findWithPagination(criterion,
+ fetchEagerFields,
+ Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)),
+ pageNumber,
+ pageSize);
+ } catch (Exception ex) {
+ Logger.getLogger(RoutageManagerImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Class<TypeFichier> getManagedEntityClass() {
+ return TypeFichier.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ private ReportConfiguration<CriteriaEntity> constructReportConfiguration(ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ ReportConfiguration<CriteriaEntity> finalConfig = null;
+ if (reportConfiguration != null) {
+ CriteriaEntity criterion = reportConfiguration.getSearchEntity() != null
+ ? commonMapper.criteriaEntityFromViewToCriteriaEntity(reportConfiguration.getSearchEntity().getCriteria())
+ : null;
+
+ finalConfig = new ReportConfiguration();
+ finalConfig.setSearchEntity(criterion);
+ finalConfig.setTitle(reportConfiguration.getTitle());
+ finalConfig.getColumns().addAll(reportConfiguration.getColumns());
+ finalConfig.getHeaderDatas().addAll(reportConfiguration.getHeaderDatas());
+
+ }
+ return finalConfig;
+ }
+
+ public PaginationWithSearchEnityDAO<TypeFichier, String, TypeFichierSearch> getPaginationDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierConfigurationManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierConfigurationManagerImpl.java
new file mode 100644
index 0000000..1d9fcd5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierConfigurationManagerImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ValidateurFichierConfigurationManager;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ValidateurFichierConfigurationDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ValidateurFichierConfigurationManagerImpl implements ValidateurFichierConfigurationManager {
+
+ @EJB
+ private ValidateurFichierConfigurationDAO dao;
+
+
+ @Override
+ public ValidateurFichierConfigurationDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public Class<ValidateurFichierConfiguration> getManagedEntityClass() {
+ return ValidateurFichierConfiguration.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierManagerImpl.java
new file mode 100644
index 0000000..0b71b8c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/ValidateurFichierManagerImpl.java
@@ -0,0 +1,94 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ValidateurFichierManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.ValidateurFichierDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ValidateurFichierDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import java.io.File;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ValidateurFichierManagerImpl implements ValidateurFichierManager {
+
+ @EJB
+ private ValidateurFichierDAO dao;
+
+ @Inject
+ private MapStructMapper commonMapper;
+
+ @Override
+ public ValidateurFichierDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public List<ValidateurFichierDto> getDatas(CriteriaEntityFromView criterion) throws Exception {
+ return commonMapper.validateurFichierListToValidateurFichierDtoList(findAll(criterion, Arrays.asList(), Arrays.asList()));
+ }
+
+ @Override
+ public Map<String, Object> getParameters() {
+ return new HashMap<>();
+ }
+
+ @Override
+ public Class<ValidateurFichierDto> getClazz() {
+ return ValidateurFichierDto.class;
+ }
+
+ @Override
+ public Class<ValidateurFichier> getManagedEntityClass() {
+ return ValidateurFichier.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return getDao().getEntityManager();
+ }
+
+ @Override
+ public File printAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File printOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return generatePdf(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+ @Override
+ public File exportExcelAll(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, false);
+ }
+
+ @Override
+ public File exportExcelOne(ReportConfiguration<CriteriaFormRequest> reportConfiguration, User userConnected) throws Exception {
+ return exportExcel(finalReportConfiguration(reportConfiguration), userConnected, true);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/historique/ReferentielIntegrationHistoriqueManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/historique/ReferentielIntegrationHistoriqueManagerImpl.java
new file mode 100644
index 0000000..b611d70
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/historique/ReferentielIntegrationHistoriqueManagerImpl.java
@@ -0,0 +1,38 @@
+/*
+ * 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.referentiel.historique;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.historique.ReferentielIntegrationHistoriqueManager;
+import com.megatim.fdxcommons.dao.ifaces.referentiel.historique.ReferentielIntegrationHistoriqueDAO;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import java.util.List;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class ReferentielIntegrationHistoriqueManagerImpl implements ReferentielIntegrationHistoriqueManager {
+
+ @EJB
+ private ReferentielIntegrationHistoriqueDAO dao;
+
+ @Override
+ public ReferentielIntegrationHistoriqueDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public ReferentielIntegrationHistorique suitableIntegrationHistorique(String codeTypeFichier, String refVersion) {
+ return dao.suitableIntegrationHistorique(codeTypeFichier, refVersion);
+ }
+
+ @Override
+ public List<ReferentielIntegrationHistorique> suitableIntegrationHistorique(String refVersion) {
+ return dao.suitableIntegrationHistorique(refVersion);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/natureproduction/NatureProductionFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/natureproduction/NatureProductionFichierManagerImpl.java
new file mode 100644
index 0000000..c8e1dc4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/referentiel/natureproduction/NatureProductionFichierManagerImpl.java
@@ -0,0 +1,34 @@
+/*
+ * 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.referentiel.natureproduction;
+
+import com.megatim.fdxcommons.dao.ifaces.natureproduction.NatureProductionFichierDAO;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
+import java.util.List;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class NatureProductionFichierManagerImpl implements NatureProductionFichierManager {
+
+ @EJB
+ private NatureProductionFichierDAO dao;
+
+ @Override
+ public NatureProductionFichierDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public List<NatureProductionFichier> getByReferentiel(String referentielVersion) {
+ return getDao().getByReferentiel(referentielVersion);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/PlanificationManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/PlanificationManagerImpl.java
new file mode 100644
index 0000000..378f1ce
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/PlanificationManagerImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+import com.megatim.fdxconsultation.core.ifaces.remoteaction.PlanificationManager;
+import com.megatim.fdxconsultation.dao.ifaces.remoteaction.PlanificationDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.Date;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class PlanificationManagerImpl extends AbstractGenericManager<Planification, Long> implements PlanificationManager {
+
+ @EJB
+ private PlanificationDAO dao;
+
+ @Override
+ public GenericDAO<Planification, Long> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "id";
+ }
+
+ @Override
+ public void beforeAdd(Planification entity, User connectedUser) {
+ }
+
+ @Override
+ public void beforeRemove(Planification entity, User connectedUser) {
+ }
+
+ @Override
+ public void beforeModify(Planification actualEntity, Planification requestEntity, User connectedUser) {
+ requestEntity.setUtilisateurModification(connectedUser.getUserName());
+ requestEntity.setDateDerniereModification(new Date());
+ }
+
+ @Override
+ public Planification mapToDto(Planification entity) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+ @Override
+ public Planification mapToDetailDto(Planification entity) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(User searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/RemoteConfigurationManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/RemoteConfigurationManagerImpl.java
new file mode 100644
index 0000000..6b3f19a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/remoteaction/RemoteConfigurationManagerImpl.java
@@ -0,0 +1,174 @@
+/*
+ * 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.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.impl.AbstractGenericManager;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxcommons.model.enumeration.RemoteTypeAction;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.core.ifaces.helper.RoutingChecker;
+import com.megatim.fdxconsultation.core.ifaces.remoteaction.PlanificationManager;
+import com.megatim.fdxconsultation.core.ifaces.remoteaction.RemoteConfigurationManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.remoteaction.RemoteConfigurationDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.CdiCamelContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class RemoteConfigurationManagerImpl extends AbstractGenericManager<RemoteConfiguration, String> implements RemoteConfigurationManager {
+
+ @EJB
+ private RemoteConfigurationDAO dao;
+
+ @Inject
+ private PlanificationManager planificationManager;
+
+ @Inject
+ private CdiCamelContext camelContext;
+
+ @Inject
+ private MapStructMapper mapStructMapper;
+
+ @Inject
+ private RoutingChecker routingChecker;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Override
+ public GenericDAO<RemoteConfiguration, String> getDao() {
+ return dao;
+ }
+
+ @Override
+ public String getEntityIdName() {
+ return "codeTypeFichier";
+ }
+
+ @Override
+ @Transactional
+ public RemoteConfiguration saveAndSend(RemoteConfiguration entity, User connectedUser) {
+ if (entity.getRemoteTypeAction().equals(RemoteTypeAction.AJOUTER)) {
+ routingChecker.stopIfNotConsumer(entity.getCodeTypeFichier(), dataInMemoryHandler.getDataInMemory(), entity.getCodeParticipant());
+ }
+ if (entity.getRemoteTypeAction().equals(RemoteTypeAction.CONSULTER)) {
+ routingChecker.stopIfNotProducer(entity.getCodeTypeFichier(), dataInMemoryHandler.getDataInMemory(), entity.getCodeParticipant());
+ }
+ RemoteConfiguration newEntity = add(entity, connectedUser);
+ System.out.println("****************after save************* " + newEntity.getCodeTypeFichier());
+
+ for (Planification p : newEntity.getPlanifications()) {
+ p.setConfiguration(newEntity);
+ planificationManager.update(p.getId(), p);
+ }
+ RemoteConfiguration finalEntity = find(getEntityIdName(), newEntity.getCodeTypeFichier());
+ System.out.println("NB Planifications = " + finalEntity.getPlanifications().size());
+
+ sendMessage(mapStructMapper.remoteConfigurationToRemoteConfigurationDto(finalEntity));
+
+ return finalEntity;
+ }
+
+ @Override
+ public RemoteConfiguration updateAndSend(String id, RemoteConfiguration entity, User connectedUser) {
+ RemoteConfiguration newEntity = modify(id, entity, connectedUser);
+ sendMessage(mapStructMapper.remoteConfigurationToRemoteConfigurationDto(newEntity));
+
+ return newEntity;
+ }
+
+ @Override
+ public void deleteAndSend(String id, User connectedUser) {
+ RemoteConfiguration entity = find(getEntityIdName(), id);
+
+ if (entity != null) {
+ entity.setTypeOperation(TypeOperation.SUPPRIMER);
+ delete(id);
+ sendMessage(mapStructMapper.remoteConfigurationToRemoteConfigurationDto(entity));
+ }
+ }
+
+ @Override
+ public PaginationWithCriteriaEntityDAO<RemoteConfiguration, String> paginationWithCriteriaEntityDAO() {
+ return dao;
+ }
+
+ @Override
+ public void beforeAdd(RemoteConfiguration entity, User connectedUser) {
+ Date dateAction = new Date();
+ entity.setUtilisateurCreation(connectedUser.getUserName());
+ entity.setDateCreation(dateAction);
+
+ entity.getPlanifications().stream().forEach(p -> {
+ p.setUtilisateurCreation(connectedUser.getUserName());
+ p.setDateCreation(dateAction);
+ });
+ }
+
+ @Override
+ public void beforeRemove(RemoteConfiguration entity, User connectedUser) {
+ }
+
+ @Override
+ public void beforeModify(RemoteConfiguration actualEntity, RemoteConfiguration requestEntity, User connectedUser) {
+ Date dateAction = new Date();
+ actualEntity.setUtilisateurModification(connectedUser.getUserName());
+ actualEntity.setDateDerniereModification(dateAction);
+ actualEntity.setUrl(requestEntity.getUrl());
+ actualEntity.setRemoteTypeAction(requestEntity.getRemoteTypeAction());
+ actualEntity.setPlanifications(requestEntity.getPlanifications());
+
+ actualEntity.getPlanifications().stream().forEach(p -> {
+ p.setUtilisateurModification(connectedUser.getUserName());
+ p.setDateDerniereModification(dateAction);
+ });
+ }
+
+ @Override
+ public RemoteConfigurationDto mapToDto(RemoteConfiguration entity) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public RemoteConfigurationDto mapToDetailDto(RemoteConfiguration entity) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public RestrictionsContainer construireRequete(User searchEntity, TypeOperation typeOperation) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ private void sendMessage(RemoteConfigurationDto configDto) {
+ ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+ producerTemplate.sendBodyAndHeaders("direct:" + AppCommonContext.REMOTE_CONGIGURATION_DIRECT, configDto, headers());
+ }
+
+ private Map<String, Object> headers() {
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("CamelRabbitmqDeliveryMode", 2);//pour permettre au message de rester dans la file même après redémarrage
+
+ return headers;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/DashboardFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/DashboardFichierManagerImpl.java
new file mode 100644
index 0000000..2ca580e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/DashboardFichierManagerImpl.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.core.impl.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.searchs.DashboardFichierManager;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordDAO;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DashboardFichierManagerImpl implements DashboardFichierManager {
+
+ @Inject
+ private TableauBordDAO dao;
+
+ @Override
+ public List<TypeFichier> tableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+ return dao.tableauBordTypeFichiers(userName, referentielVersion, typeFichierSearch, pageNumber, pageSize);
+ }
+
+ @Override
+ public Long countTableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch) {
+ return dao.countTableauBordTypeFichiers(userName, referentielVersion, typeFichierSearch);
+ }
+
+ @Override
+ public List<TypeFichier> tableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+ return dao.tableauBordGlobalTypeFichiers(referentielVersion, typeFichierSearch, pageNumber, pageSize);
+ }
+
+ @Override
+ public Long countTableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch) {
+ return dao.countTableauBordGlobalTypeFichiers(referentielVersion, typeFichierSearch);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/TypeFichierReferentielManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/TypeFichierReferentielManagerImpl.java
new file mode 100644
index 0000000..1bd929c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/TypeFichierReferentielManagerImpl.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.core.impl.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.searchs.TypeFichierReferentielManager;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.TypeFichierReferentielSearchDAO;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class TypeFichierReferentielManagerImpl implements TypeFichierReferentielManager {
+
+ @Inject
+ private TypeFichierReferentielSearchDAO dao;
+
+ @Override
+ public List<TypeFichier> all(int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity) {
+ return dao.all(pageNumber, pagesize, searchEntity);
+ }
+
+ @Override
+ public Long count(TypeFichierReferentielSearch searchEntity) {
+ return dao.count(searchEntity);
+ }
+
+ @Override
+ public List<TypeFichier> all(String userName, int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity) {
+ return dao.all(userName, pageNumber, pagesize, searchEntity);
+ }
+
+ @Override
+ public Long count(String userName, TypeFichierReferentielSearch searchEntity) {
+ return dao.count(userName, searchEntity);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserParticipantManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserParticipantManagerImpl.java
new file mode 100644
index 0000000..3b9e4fa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserParticipantManagerImpl.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.core.impl.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserParticipantManager;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.UserParticipantDAO;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import java.util.ArrayList;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class UserParticipantManagerImpl implements UserParticipantManager {
+
+ @Inject
+ private UserParticipantDAO dao;
+
+ @Override
+ public List<Participant> findUserParticipants(String userName) {
+ return dao.findUserParticipants(userName);
+ }
+
+ @Override
+ public List<Participant> findUserParticipantsWithPagination(String userName, ParticipantSearch participantSearch, int pageNumber, int pageSize) {
+ try {
+ return dao.findUserParticipantsWithPagination(userName, participantSearch, pageNumber, pageSize);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ArrayList<>();
+ }
+
+ }
+
+ @Override
+ public List<Participant> findAllUserParticipants(String userName, ParticipantSearch participantSearch) {
+ try {
+ return dao.findAllUserParticipants(userName, participantSearch);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ArrayList<>();
+ }
+
+ }
+
+ @Override
+ public Long countUserParticipants(String userName, ParticipantSearch participantSearch) {
+ return dao.countUserParticipants(userName, participantSearch);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserTypeFichierManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserTypeFichierManagerImpl.java
new file mode 100644
index 0000000..71b8c5e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/searchs/UserTypeFichierManagerImpl.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxconsultation.core.impl.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserTypeFichierManager;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.UserTypeFichierDAO;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.ArrayList;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class UserTypeFichierManagerImpl implements UserTypeFichierManager {
+
+ @Inject
+ private UserTypeFichierDAO dao;
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiers(String userName) {
+ return dao.findUserTypeFichiers(userName);
+ }
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiersWithPagination(String userName, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+ try {
+ return dao.findUserTypeFichiersWithPagination(userName, typeFichierSearch, pageNumber, pageSize);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new ArrayList<>();
+ }
+
+ }
+
+ @Override
+ public Long countUserTypeFichiers(String userName, TypeFichierSearch typeFichierSearch) {
+ return dao.countUserTypeFichiers(userName, typeFichierSearch);
+ }
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiersInReferentielWithPagination(String userName, String referentiel, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+ return dao.findUserTypeFichiersInReferentielWithPagination(userName, referentiel, typeFichierSearch, pageNumber, pageSize);
+ }
+
+ @Override
+ public Long countUserTypeFichiersInReferentiel(String userName, String referentiel, TypeFichierSearch typeFichierSearch) {
+ return dao.countUserTypeFichiersInReferentiel(userName, referentiel, typeFichierSearch);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/DisplayOptionsManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/DisplayOptionsManagerImpl.java
new file mode 100644
index 0000000..995c941
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/DisplayOptionsManagerImpl.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.core.impl.settings;
+
+import com.megatim.fdxconsultation.core.ifaces.settings.DisplayOptionsManager;
+import com.megatim.fdxconsultation.dao.ifaces.settings.DisplayOptionsDAO;
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DisplayOptionsManagerImpl implements DisplayOptionsManager {
+
+ @Inject
+ private DisplayOptionsDAO displayOptionsDAO;
+
+ @Override
+ public DisplayOptions current() {
+ return displayOptionsDAO.current();
+ }
+
+ @Override
+ public DisplayOptions edit(DisplayOptions entity) {
+ return displayOptionsDAO.edit(entity);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/SettingsManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/SettingsManagerImpl.java
new file mode 100644
index 0000000..d86c1e7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/settings/SettingsManagerImpl.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.core.impl.settings;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.core.ifaces.settings.SettingsManager;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class SettingsManagerImpl implements SettingsManager {
+
+ @Inject
+ private ReferentielDAO referentielDAO;
+
+ @Override
+ public Referentiel currentReferentiel() {
+ return referentielDAO.getReferentielEnCours();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/sockets/DataProductionSessionHandler.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/sockets/DataProductionSessionHandler.java
new file mode 100644
index 0000000..bb00f46
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/sockets/DataProductionSessionHandler.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxconsultation.core.impl.sockets;
+
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+public class DataProductionSessionHandler {
+
+ private final Map<String, Session> idToSessions = new ConcurrentHashMap<>();
+
+ public void publishMessage(DataProduction dataProduction) {
+ getSessions().forEach(s -> {
+ try {
+ s.getBasicRemote().sendObject(dataProduction);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ });
+ }
+
+ public void addSession(Session session) {
+ idToSessions.put(session.getId(), session);
+ }
+
+ public void removeSession(Session session) {
+ idToSessions.remove(session.getId());
+ }
+
+ private List<Session> getSessions() {
+ return idToSessions
+ .entrySet()
+ .stream()
+ .map(e -> e.getValue())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityFromView.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityFromView.java
new file mode 100644
index 0000000..c291cf5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityFromView.java
@@ -0,0 +1,89 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ConvertedCriteriaEntityFromView {
+
+ private final CriteriaEntityPersisted criteriaEntityPersisted;
+
+ public ConvertedCriteriaEntityFromView(CriteriaEntityPersisted criteriaEntityPersisted) {
+ this.criteriaEntityPersisted = criteriaEntityPersisted;
+ }
+
+ public CriteriaEntityFromView criteriaEntityFromView() {
+ return buildCriterion(criteriaEntityPersisted);
+ }
+
+ private CriteriaEntityFromView buildCriterion(CriteriaEntityPersisted persisted) {
+
+ if (persisted != null) {
+
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+
+ if (persisted.getSubCriterias() != null && !persisted.getSubCriterias().isEmpty()) {
+
+ criterion.setCriteriaLogicConnector(persisted.getCriteriaLogicConnector());
+ persisted.getSubCriterias().stream().forEach(c -> {
+ CriteriaEntityFromView criterionfromView = buildCriterion(c);
+ if (criterionfromView != null) {
+ criterion.getSubCriterias().add(criterionfromView);
+ }
+ });
+
+ return criterion;
+
+ } else {
+
+ criterion.setNomColonne(persisted.getNomColonne());
+ criterion.setOperateur(persisted.getOperateur());
+ criterion.setCriteriaValue(criteriaValue(persisted));
+
+ return criterion;
+ }
+
+ }
+
+ return null;
+ }
+
+ public Object criteriaValue(CriteriaEntityPersisted persisted) {
+
+ if (persisted.getCriteriaDateListValue() != null && !persisted.getCriteriaDateListValue().isEmpty()) {
+ return persisted.getCriteriaDateListValue();
+
+ } else if (persisted.getCriteriaDateLowerBound() != null && persisted.getCriteriaDateUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaDateLowerBound(), persisted.getCriteriaDateUpperBound());
+
+ } else if (persisted.getCriteriaDateValue() != null) {
+ return persisted.getCriteriaDateValue();
+
+ } else if (persisted.getCriteriaNumericListValue() != null && !persisted.getCriteriaNumericListValue().isEmpty()) {
+ return persisted.getCriteriaNumericListValue();
+
+ } else if (persisted.getCriteriaNumericLowerBound() != null && persisted.getCriteriaNumericUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaNumericLowerBound(), persisted.getCriteriaNumericUpperBound());
+
+ } else if (persisted.getCriteriaNumericValue() != null) {
+ return persisted.getCriteriaNumericValue();
+
+ } else if (persisted.getCriteriaStringListValue() != null && !persisted.getCriteriaStringListValue().isEmpty()) {
+ return persisted.getCriteriaStringListValue();
+
+ } else if (persisted.getCriteriaStringLowerBound() != null && persisted.getCriteriaStringUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaStringLowerBound(), persisted.getCriteriaStringUpperBound());
+
+ } else if (persisted.getCriteriaStringValue() != null) {
+ return persisted.getCriteriaStringValue();
+
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityPersisted.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityPersisted.java
new file mode 100644
index 0000000..11fcdce
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedCriteriaEntityPersisted.java
@@ -0,0 +1,166 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ConvertedCriteriaEntityPersisted {
+
+ private final QueryCriterion criterion;
+ private final Map<String, ColumnDefinition> nameToColumnDefinitionMap;
+
+ public ConvertedCriteriaEntityPersisted(QueryCriterion criterion, List<ColumnDefinition> columnDefinitions) {
+ this.criterion = criterion;
+ this.nameToColumnDefinitionMap = columnDefinitions.stream().collect(Collectors.toMap(c -> c.getName(), c -> c));
+ }
+
+ public CriteriaEntityPersisted criteriaEntityPersisted() {
+
+ CriteriaEntityPersisted entityPersisted = new CriteriaEntityPersisted();
+ entityPersisted.setCriteriaLogicConnector(criterion.getCriteriaLogicConnector());
+
+ if (criterion.getSubCriteria() != null && !criterion.getSubCriteria().isEmpty()) {
+
+ for (QueryCriterion c : criterion.getSubCriteria()) {
+
+ CriteriaEntityPersisted ceP = new ConvertedCriteriaEntityPersisted(
+ c,
+ nameToColumnDefinitionMap
+ .values()
+ .stream()
+ .collect(Collectors.toList())
+ ).criteriaEntityPersisted();
+ ceP.setParent(entityPersisted);
+ entityPersisted.getSubCriterias().add(ceP);
+ }
+
+ } else {
+
+ entityPersisted.setNomColonne(criterion.getNomColonne().toLowerCase());
+ entityPersisted.setOperateur(criterion.getOperateur());
+ setCorrectTypeForCriteriaValue(entityPersisted);
+
+ }
+
+ return entityPersisted;
+ }
+
+ private void setCorrectTypeForCriteriaValue(CriteriaEntityPersisted entityPersisted) {
+
+ ColumnDefinition columnDefinition = nameToColumnDefinitionMap.get(criterion.getNomColonne().toLowerCase());
+ String typeDonnee = columnDefinition.getTypeDonnee();
+ Object criteriaValue = criterion.getCriteriaValue();
+
+ if (operatorWithSingleValue()) {
+ setSignleValue(typeDonnee, entityPersisted, criteriaValue);
+ return;
+ }
+
+ if (operatorWithBeetween()) {
+ setBetweenValue(criteriaValue, typeDonnee, entityPersisted);
+ return;
+ }
+
+ if (operatorWithIn()) {
+ setInValue(typeDonnee, criteriaValue, entityPersisted);
+ }
+ }
+
+ private void setInValue(String typeDonnee, Object criteriaValue, CriteriaEntityPersisted entityPersisted) {
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+
+ Set<Number> criteriaValues = ((List<Number>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaNumericListValue().addAll(criteriaValues);
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+
+ Set<String> criteriaValues = ((List<String>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaStringListValue().addAll(criteriaValues);
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+
+ Set<LocalDateTime> criteriaValues = ((List<LocalDateTime>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaDateListValue().addAll(criteriaValues);
+
+ }
+ }
+
+ private void setBetweenValue(Object criteriaValue, String typeDonnee, CriteriaEntityPersisted entityPersisted) {
+ BetweenOperatorValues betweenOperatorValues = (BetweenOperatorValues) criteriaValue;
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+
+ entityPersisted.setCriteriaNumericLowerBound((Number) betweenOperatorValues.getLowerBound());
+ entityPersisted.setCriteriaNumericUpperBound((Number) betweenOperatorValues.getUpperBound());
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+
+ entityPersisted.setCriteriaStringLowerBound(betweenOperatorValues.getLowerBound().toString());
+ entityPersisted.setCriteriaStringUpperBound(betweenOperatorValues.getUpperBound().toString());
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+
+ entityPersisted.setCriteriaDateLowerBound(LocalDateTime.parse(betweenOperatorValues.getLowerBound().toString()));
+ entityPersisted.setCriteriaDateUpperBound(LocalDateTime.parse(betweenOperatorValues.getUpperBound().toString()));
+
+ }
+ }
+
+ private void setSignleValue(String typeDonnee, CriteriaEntityPersisted entityPersisted, Object criteriaValue) {
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+
+ entityPersisted.setCriteriaNumericValue((Number) criteriaValue);
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+
+ entityPersisted.setCriteriaStringValue(criteriaValue.toString());
+
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+
+ entityPersisted.setCriteriaDateValue(LocalDateTime.parse(criteriaValue.toString()));
+
+ } else if (operatorWithLike()) {
+
+ entityPersisted.setCriteriaStringValue(criteriaValue.toString());
+
+ }
+ }
+
+ private boolean operatorWithBeetween() {
+ return criterion.getOperateur().equals(Operateur.BETWEEN)
+ || criterion.getOperateur().equals(Operateur.BETWEEN);
+ }
+
+ private boolean operatorWithSingleValue() {
+ return criterion.getOperateur().equals(Operateur.EQUALS)
+ || criterion.getOperateur().equals(Operateur.NOT_EQUALS)
+ || criterion.getOperateur().equals(Operateur.GREATER_THAN)
+ || criterion.getOperateur().equals(Operateur.GREATER_OR_EQUALS_THAN)
+ || criterion.getOperateur().equals(Operateur.LOWER_THAN)
+ || criterion.getOperateur().equals(Operateur.LOWER_OR_EQUALS_THAN)
+ || criterion.getOperateur().equals(Operateur.LIKE);
+ }
+
+ private boolean operatorWithLike() {
+ return criterion.getOperateur().equals(Operateur.LIKE);
+ }
+
+ private boolean operatorWithIn() {
+ return criterion.getOperateur().equals(Operateur.LIKE);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfiguration.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfiguration.java
new file mode 100644
index 0000000..430ff5b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfiguration.java
@@ -0,0 +1,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);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfigurationResponse.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfigurationResponse.java
new file mode 100644
index 0000000..3e39d21
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableConfigurationResponse.java
@@ -0,0 +1,55 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.dto.TableConfigurationResponse;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordColumnResponse;
+import java.io.Serializable;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ConvertedTableConfigurationResponse implements Serializable {
+
+ private final TableConfiguration tableConfiguration;
+
+ public ConvertedTableConfigurationResponse(TableConfiguration tableConfiguration) {
+ this.tableConfiguration = tableConfiguration;
+ }
+
+ public TableConfigurationResponse tableConfigurationResponse() {
+ return new TableConfigurationResponse(
+ tableConfiguration.getLibelle(),
+ tableConfiguration.getFonctionAggregation(),
+ tableConfiguration.getTypeResultatConfiguration(),
+ targetedColumn(),
+ groupingColumns(),
+ new ConvertedCriteriaEntityFromView(tableConfiguration.getCriterion()).criteriaEntityFromView(),
+ tableConfiguration.getColor()
+ );
+ }
+
+ private Set<TableauBordColumnResponse> groupingColumns() {
+ return tableConfiguration.getGroupingColumns() != null
+ ? tableConfiguration
+ .getGroupingColumns()
+ .stream()
+ .map(c -> new TableauBordColumnResponse(c.getName(), c.getTypeDonnee()))
+ .collect(Collectors.toSet())
+ : null;
+ }
+
+ private TableauBordColumnResponse targetedColumn() {
+ return tableConfiguration.getTargetedColumn() != null
+ ? new TableauBordColumnResponse(
+ tableConfiguration.getTargetedColumn().getName(),
+ tableConfiguration.getTargetedColumn().getTypeDonnee())
+ : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBord.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBord.java
new file mode 100644
index 0000000..15f2824
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBord.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumns;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import java.sql.SQLException;
+import java.util.List;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+class ConvertedTableauBord {
+
+ private final TableauBordRequest tableauBordRequest;
+ private final List<ColumnDefinition> columnDefinitions;
+ private final FdxTableColumns fdxTableColumns;
+
+
+ public ConvertedTableauBord(TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions, FdxTableColumns fdxTableColumns) {
+ this.tableauBordRequest = tableauBordRequest;
+ this.columnDefinitions = columnDefinitions;
+ this.fdxTableColumns = fdxTableColumns;
+ }
+
+ public TableauBord tableauBord() throws SQLException, NamingException, LocalDateTimeValueParseError, BadQueryCriteriaException {
+
+ TableauBord tableauBord = new TableauBord();
+
+ tableauBord.setDescription(tableauBordRequest.getDescription());
+ tableauBord.setReferentiel(tableauBordRequest.getReferentiel());
+ tableauBord.setTypeFichier(tableauBordRequest.getTypeFichier());
+
+ for (TableConfigurationDto t : tableauBordRequest.getTableConfigurations()) {
+ TableConfiguration tableConfiguration = new ConvertedTableConfiguration(t, fdxTableColumns, columnDefinitions).tableConfiguration();
+ tableConfiguration.setTableauBord(tableauBord);
+ tableauBord.getTableConfigurations().add(tableConfiguration);
+ }
+
+ return tableauBord;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBordResponse.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBordResponse.java
new file mode 100644
index 0000000..c8ad5bd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/ConvertedTableauBordResponse.java
@@ -0,0 +1,82 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.dto.TableConfigurationResponse;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordFlatResponse;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordResponse;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ConvertedTableauBordResponse {
+
+ private final TableauBord tableauBord;
+
+ public ConvertedTableauBordResponse(TableauBord tableauBord) {
+ this.tableauBord = tableauBord;
+ }
+
+ public TableauBordResponse tableauBordResponse() {
+ TableauBordResponse tableauBordResponse
+ = new TableauBordResponse(
+ tableauBord.getDescription(),
+ typeFichierSlimDto(tableauBord.getTypeFichier()),
+ referentielSlimDto(tableauBord.getReferentiel()),
+ tableauBord.getTypeConfiguration(),
+ tableConfigurationResponses()
+ );
+ return tableauBordResponse;
+ }
+
+ public TableauBordFlatResponse tableauBordFlatResponse() {
+ TableauBordFlatResponse tableauBordFlatResponse
+ = new TableauBordFlatResponse(
+ tableauBord.getDescription(),
+ typeFichierSlimDto(tableauBord.getTypeFichier()),
+ referentielSlimDto(tableauBord.getReferentiel()),
+ tableauBord.getTypeConfiguration()
+ );
+ return tableauBordFlatResponse;
+ }
+
+ private Set<TableConfigurationResponse> tableConfigurationResponses() {
+ return tableauBord.getTableConfigurations()
+ .stream()
+ .map(t -> new ConvertedTableConfigurationResponse(t).tableConfigurationResponse())
+ .collect(Collectors.toSet());
+ }
+
+ private TypeFichierSlimDto typeFichierSlimDto(TypeFichier typeFichier) {
+ TypeFichierSlimDto typeFichierSlimDto = new TypeFichierSlimDto();
+ typeFichierSlimDto.setCategorieFichier(typeFichier.getCategorieFichier());
+ typeFichierSlimDto.setCode(typeFichier.getCode());
+ typeFichierSlimDto.setDescription(typeFichier.getDescription());
+ typeFichierSlimDto.setLibelle(typeFichier.getLibelle());
+ typeFichierSlimDto.setCreateBy(typeFichier.getCreateBy());
+ typeFichierSlimDto.setDateCreation(typeFichier.getDateCreation());
+ typeFichierSlimDto.setLastModifiedBy(typeFichier.getLastModifiedBy());
+ typeFichierSlimDto.setDateMiseAjour(typeFichier.getDateMiseAjour());
+ return typeFichierSlimDto;
+ }
+
+ private ReferentielSlimDto referentielSlimDto(Referentiel referentiel) {
+ ReferentielSlimDto referentielSlimDto = new ReferentielSlimDto();
+ referentielSlimDto.setVersion(referentiel.getVersion());
+ referentielSlimDto.setDateGeneration(referentiel.getDateGeneration());
+ referentielSlimDto.setStatutReferentiel(referentiel.getStatutReferentiel());
+ referentielSlimDto.setDescription(referentiel.getDescription());
+ referentielSlimDto.setCreateBy(referentiel.getCreateBy());
+ referentielSlimDto.setDateCreation(referentiel.getDateCreation());
+ referentielSlimDto.setLastModifiedBy(referentiel.getLastModifiedBy());
+ referentielSlimDto.setDateMiseAjour(referentiel.getDateMiseAjour());
+ return referentielSlimDto;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/CriteriaEntityPersistedManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/CriteriaEntityPersistedManagerImpl.java
new file mode 100644
index 0000000..423d594
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/CriteriaEntityPersistedManagerImpl.java
@@ -0,0 +1,225 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.core.ifaces.db.validators.CriteriaQueryValidator;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.GREATER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.IN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LIKE;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_OR_EQUALS_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.LOWER_THAN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_BETWEEN;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_EQUALS;
+import static com.megatim.fdxcommons.model.enumeration.Operateur.NOT_IN;
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.BetweenOperatorValues;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.CriteriaEntityPersistedManager;
+import com.megatim.fdxconsultation.dao.ifaces.stats.CriteriaEntityPersistedDAO;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class CriteriaEntityPersistedManagerImpl implements CriteriaEntityPersistedManager {
+
+ @EJB
+ private CriteriaEntityPersistedDAO dao;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private CriteriaQueryValidator criteriaQueryValidator;
+
+ @Override
+ public CriteriaEntityPersistedDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public List<CriteriaEntityPersisted> subCriterias(Long id) {
+ return dao.subCriterias(id);
+ }
+
+ @Override
+ public CriteriaEntityPersisted constructCriteriaPersisted(String codeTypeFichier, String referentielVersion, CriteriaEntityFromView criterionFromView) {
+ Map<String, ColumnDefinition> columnDefinitionMap = columnDefinitionManager.getColumnsDefimitionMap(codeTypeFichier, referentielVersion);
+ return criteriaFromViewToCriteriaPersisted(criterionFromView, columnDefinitionMap);
+ }
+
+ @Override
+ public CriteriaEntityFromView criteriaEntityPersistedToCriteriaEntityFromView(CriteriaEntityPersisted persisted) {
+ CriteriaEntityFromView mainCriterion = new CriteriaEntityFromView();
+ List<CriteriaEntityPersisted> subCriterias = subCriterias(persisted.getId());
+ if (!subCriterias.isEmpty()) {
+ mainCriterion.setCriteriaLogicConnector(persisted.getCriteriaLogicConnector());
+ subCriterias.stream().forEach(c -> {
+ CriteriaEntityFromView criterionfromView = criteriaEntityPersistedToCriteriaEntityFromView(c);
+ mainCriterion.getSubCriterias().add(criterionfromView);
+ });
+ } else {
+ mainCriterion.setNomColonne(persisted.getNomColonne());
+ mainCriterion.setOperateur(persisted.getOperateur());
+ mainCriterion.setCriteriaValue(getCriteriaValue(persisted));
+ }
+ return mainCriterion;
+ }
+
+ private Object getCriteriaValue(CriteriaEntityPersisted persisted) {
+
+ if (persisted.getCriteriaDateListValue() != null && !persisted.getCriteriaDateListValue().isEmpty()) {
+ return persisted.getCriteriaDateListValue();
+
+ } else if (persisted.getCriteriaDateLowerBound() != null && persisted.getCriteriaDateUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaDateLowerBound(), persisted.getCriteriaDateUpperBound());
+
+ } else if (persisted.getCriteriaDateValue() != null) {
+ return persisted.getCriteriaDateValue();
+
+ } else if (persisted.getCriteriaNumericListValue() != null && !persisted.getCriteriaNumericListValue().isEmpty()) {
+ return persisted.getCriteriaNumericListValue();
+
+ } else if (persisted.getCriteriaNumericLowerBound() != null && persisted.getCriteriaNumericUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaNumericLowerBound(), persisted.getCriteriaNumericUpperBound());
+
+ } else if (persisted.getCriteriaNumericValue() != null) {
+ return persisted.getCriteriaNumericValue();
+
+ } else if (persisted.getCriteriaStringListValue() != null && !persisted.getCriteriaStringListValue().isEmpty()) {
+ return persisted.getCriteriaStringListValue();
+
+ } else if (persisted.getCriteriaStringLowerBound() != null && persisted.getCriteriaStringUpperBound() != null) {
+ return new BetweenOperatorValues(persisted.getCriteriaStringLowerBound(), persisted.getCriteriaStringUpperBound());
+
+ } else if (persisted.getCriteriaStringValue() != null) {
+ return persisted.getCriteriaStringValue();
+
+ } else {
+ return null;
+ }
+ }
+
+ private CriteriaEntityPersisted criteriaFromViewToCriteriaPersisted(
+ CriteriaEntityFromView criterion,
+ Map<String, ColumnDefinition> columnDefinitionMap
+ ) {
+
+ if (criterion == null) {
+ return null;
+ }
+
+ CriteriaEntityPersisted entityPersisted = new CriteriaEntityPersisted();
+ entityPersisted.setCriteriaLogicConnector(criterion.getCriteriaLogicConnector());
+
+ if (criterion.getSubCriterias() != null && !criterion.getSubCriterias().isEmpty()) {
+ for (CriteriaEntityFromView c : criterion.getSubCriterias()) {
+ CriteriaEntityPersisted ceP = criteriaFromViewToCriteriaPersisted(c, columnDefinitionMap);
+ ceP.setParent(entityPersisted);
+ entityPersisted.getSubCriterias().add(ceP);
+ }
+ return entityPersisted;
+
+ } else {
+
+ entityPersisted.setNomColonne(criterion.getNomColonne().toLowerCase());
+ entityPersisted.setOperateur(criterion.getOperateur());
+ ColumnDefinition columnDefinition = columnDefinitionMap.get(criterion.getNomColonne().toLowerCase());
+ setCorrectTypeForCriteriaValue(entityPersisted, criterion.getCriteriaValue(), columnDefinition.getTypeDonnee(), criterion.getOperateur());
+
+ return entityPersisted;
+ }
+ }
+
+ private void setCorrectTypeForCriteriaValue(CriteriaEntityPersisted entityPersisted, Object criteriaValue, String typeDonnee, Operateur operateur) {
+ switch (operateur) {
+ case EQUALS:
+ case NOT_EQUALS:
+ case GREATER_THAN:
+ case GREATER_OR_EQUALS_THAN:
+ case LOWER_THAN:
+ case LOWER_OR_EQUALS_THAN:
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+ entityPersisted.setCriteriaNumericValue((Number) criteriaValue);
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+ entityPersisted.setCriteriaStringValue(criteriaValue.toString());
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ entityPersisted.setCriteriaDateValue(LocalDateTime.parse(criteriaValue.toString()));
+ } else {
+ throw new CommonApplicationValidationException("'" + typeDonnee + "' inconnu");
+ }
+ break;
+ case LIKE:
+ entityPersisted.setCriteriaStringValue(criteriaValue.toString());
+ break;
+
+ case BETWEEN:
+ case NOT_BETWEEN:
+ BetweenOperatorValues betweenOperatorValues = criteriaQueryValidator.getBetweenOperatorValues(criteriaValue);
+ if (betweenOperatorValues == null) {
+ throw new CommonApplicationValidationException("La valeur du critère de l'opérateur '" + operateur + "'ne peut être null");
+ }
+ StringBuilder message = new StringBuilder();
+
+ if (betweenOperatorValues.getLowerBound() == null) {
+ message.append("Borne inférieure manquante");
+ }
+ if (betweenOperatorValues.getUpperBound() == null) {
+ message.append("\nBorne supérieure manquante");
+ }
+ if (message.length() > 0) {
+ throw new CommonApplicationValidationException("Opérateur" + operateur + "' : " + message);
+ }
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+ entityPersisted.setCriteriaNumericLowerBound((Number) betweenOperatorValues.getLowerBound());
+ entityPersisted.setCriteriaNumericUpperBound((Number) betweenOperatorValues.getUpperBound());
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+ entityPersisted.setCriteriaStringLowerBound(betweenOperatorValues.getLowerBound().toString());
+ entityPersisted.setCriteriaStringUpperBound(betweenOperatorValues.getUpperBound().toString());
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ entityPersisted.setCriteriaDateLowerBound(LocalDateTime.parse(betweenOperatorValues.getLowerBound().toString()));
+ entityPersisted.setCriteriaDateUpperBound(LocalDateTime.parse(betweenOperatorValues.getUpperBound().toString()));
+ } else {
+ throw new CommonApplicationValidationException("'" + typeDonnee + "' inconnu");
+ }
+ break;
+
+ case IN:
+ case NOT_IN:
+ if (!(criteriaValue instanceof List)) {
+ throw new CommonApplicationValidationException("Le criteriaValue de l'opérateur '" + operateur + "' doit être de type List");
+ }
+
+ if (typeDonnee.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+ Set<Number> criteriaValues = ((List<Number>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaNumericListValue().addAll(criteriaValues);
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+ Set<String> criteriaValues = ((List<String>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaStringListValue().addAll(criteriaValues);
+ } else if (typeDonnee.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+ Set<LocalDateTime> criteriaValues = ((List<LocalDateTime>) criteriaValue).stream().collect(Collectors.toSet());
+ entityPersisted.getCriteriaDateListValue().addAll(criteriaValues);
+ } else {
+ throw new CommonApplicationValidationException("'" + typeDonnee + "' inconnu");
+ }
+ break;
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableConfigurationManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableConfigurationManagerImpl.java
new file mode 100644
index 0000000..5b67cee
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableConfigurationManagerImpl.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableConfigurationManager;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableConfigurationDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableConfigurationManagerImpl implements TableConfigurationManager {
+
+ @EJB
+ private TableConfigurationDAO dao;
+
+ @Override
+ public TableConfigurationDAO getDao() {
+ return dao;
+ }
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordColumnManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordColumnManagerImpl.java
new file mode 100644
index 0000000..dd84565
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordColumnManagerImpl.java
@@ -0,0 +1,27 @@
+/*
+ * 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.stats;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordColumnManager;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordColumnDAO;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordColumnManagerImpl implements TableauBordColumnManager {
+
+ @EJB
+ private TableauBordColumnDAO dao;
+
+ @Override
+ public TableauBordColumnDAO getDao() {
+ return dao;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordGlobalSearchManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordGlobalSearchManagerImpl.java
new file mode 100644
index 0000000..705918f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordGlobalSearchManagerImpl.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordGlobalSearchManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordGlobalSearchDAO;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordGlobalSearch;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordGlobalSearchManagerImpl implements TableauBordGlobalSearchManager {
+
+ @EJB
+ private TableauBordGlobalSearchDAO dao;
+
+ @Override
+ public PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordGlobalSearch> getPaginationDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordManagerImpl.java
new file mode 100644
index 0000000..35aa9df
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordManagerImpl.java
@@ -0,0 +1,316 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.exceptions.BadQueryCriteriaException;
+import com.megatim.fdxcommons.tools.database.exceptions.LocalDateTimeValueParseError;
+import com.megatim.fdxcommons.tools.database.tables.FdxTable;
+import com.megatim.fdxcommons.tools.database.tables.FdxTableColumns;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.stats.StatResultDto;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSearch;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordManagerImpl implements TableauBordManager {
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @EJB
+ private TableauBordDAO dao;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Inject
+ private ReferentielManager refManager;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Override
+ public TableauBordDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordSearch> getPaginationDao() {
+ return dao;
+ }
+
+ @Override
+ public List<TableauBord> findByReferentiel(String referentielVersion) {
+ return getDao().findByReferentiel(referentielVersion);
+ }
+
+ @Override
+ public TableauBord findByUserAndTypeFichierAndReferentiel(Long userId, String codeTypeFichier, String referentielVersion) {
+ TableauBord tableauBord = getDao().findByUserAndTypeFichierAndReferentiel(userId, codeTypeFichier, referentielVersion);
+ if (tableauBord == null) {
+ throw new CommonRessourceNotFoundException("La ressource ayant le fichier " + codeTypeFichier + " et le référentiel " + referentielVersion + " est introuvable");
+ }
+ return tableauBord;
+ }
+
+ @Override
+ public Map<String, List<String>> userTableauBordToTypeFichiers(String userName) {
+ Map<String, List<String>> particpantToFichierDto = new HashMap<>();
+ dao.tableauBordToTypeFichiers(userName, dataInMemoryHandler.getDataInMemory().getReferentielEnCours().getVersion()).forEach(p -> {
+ String key = p.getCodeParticipant();
+ List<String> value = particpantToFichierDto.get(key);
+ if (value == null) {
+ value = new ArrayList<>();
+ }
+ value.add(p.getCodeFichier());
+ particpantToFichierDto.put(key, value);
+ });
+ return particpantToFichierDto;
+ }
+
+ @Override
+ public Map<String, List<String>> globalTableauBordToTypeFichiers() {
+ Map<String, List<String>> particpantToFichierDto = new HashMap<>();
+ dao
+ .tableauBordToTypeFichiers(TypeConfigurationTableauBord.GLOBAL, dataInMemoryHandler.getDataInMemory().getReferentielEnCours().getVersion())
+ .forEach(p -> {
+ String key = p.getCodeParticipant();
+ List<String> value = particpantToFichierDto.get(key);
+ if (value == null) {
+ value = new ArrayList<>();
+ }
+ value.add(p.getCodeFichier());
+ particpantToFichierDto.put(key, value);
+ });
+ return particpantToFichierDto;
+ }
+
+ @Override
+ public List<TableauBord> deleteUserTableauBord(User user) {
+ //Tous les tableaux de bord associés à l'utilisateur user
+ List<TableauBord> tableauxBords = getDao().findByUser(user.getId(), refManager.getReferentielEnCours().getVersion());
+ List<TableauBord> tableauxBordsDeleted = new ArrayList<>();
+
+ //TypeFichiers auxquels l'utilisateur user à accès
+ Map<String, TypeFichier> typeFichiersMap = user.getTypeFichiers()
+ .stream()
+ .collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+
+ for (TableauBord t : tableauxBords) {
+ //Supprimer les tableaux de bord dont le typefichier n'est plus accessible à user
+ if (!typeFichiersMap.containsKey(t.getTypeFichier().getCode())) {
+ getDao().delete(t);
+ tableauxBordsDeleted.add(t);
+ }
+ }
+ return tableauxBordsDeleted;
+ }
+
+ @Override
+ public TableauBord findByTypeConfigurationAndReferentiel(String codeTypeFichier, String referentielVersion, TypeConfigurationTableauBord typeConfiguration) {
+ return getDao().findByTypeConfigurationAndReferentiel(codeTypeFichier, referentielVersion, typeConfiguration);
+ }
+
+ @Override
+ public TableauBord save(TableauBordRequest tableauBordRequest) {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ String codeTypeFichier = tableauBordRequest.getTypeFichier().getCode();
+ String referentielVersion = tableauBordRequest.getReferentiel().getVersion();
+
+ FdxTable fdxTable = FdxConsultationTableFactory.createTable(codeTypeFichier, referentielVersion, connection);
+ List<ColumnDefinition> columnDefinitions = fdxTable.tableDefinition(connection).tableDefinition().getColumnDefinitions();
+ FdxTableColumns fdxTableColumns = fdxTable.tableColumns(connection);
+
+ stopIfRequestIsNotCorrect(codeTypeFichier, referentielVersion, tableauBordRequest, columnDefinitions);
+
+ TableauBord tableauBord = new ConvertedTableauBord(tableauBordRequest, columnDefinitions, fdxTableColumns).tableauBord();
+ tableauBord.setTypeConfiguration(TypeConfigurationTableauBord.GLOBAL);
+ return save(tableauBord);
+
+ } catch (BadQueryCriteriaException | LocalDateTimeValueParseError | SQLException | NamingException ex) {
+ throw new CommonApplicationValidationException(ex.getMessage());
+ }
+
+ }
+
+ @Override
+ public TableauBord save(User user, TableauBordRequest tableauBordRequest) {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ String codeTypeFichier = tableauBordRequest.getTypeFichier().getCode();
+ String referentielVersion = tableauBordRequest.getReferentiel().getVersion();
+
+ FdxTable fdxTable = FdxConsultationTableFactory.createTable(codeTypeFichier, referentielVersion, connection);
+ List<ColumnDefinition> columnDefinitions = fdxTable.tableDefinition(connection).tableDefinition().getColumnDefinitions();
+ FdxTableColumns fdxTableColumns = fdxTable.tableColumns(connection);
+
+ stopIfRequestIsNotCorrect(user.getId(), codeTypeFichier, referentielVersion, tableauBordRequest, columnDefinitions);
+
+ TableauBord tableauBord = new ConvertedTableauBord(tableauBordRequest, columnDefinitions, fdxTableColumns).tableauBord();
+ tableauBord.setTypeConfiguration(TypeConfigurationTableauBord.USER_SPECIFIC);
+ tableauBord.setUser(user);
+
+ TableauBord entity = save(tableauBord);
+ return entity;
+
+ } catch (BadQueryCriteriaException | LocalDateTimeValueParseError | SQLException | NamingException ex) {
+ throw new CommonApplicationValidationException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void update(Long id, TableauBordRequest tableauBordRequest) {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ TableauBord tableauBord = get(id);
+
+ FdxTable fdxTable = FdxConsultationTableFactory.createTable(
+ tableauBord.getTypeFichier().getCode(),
+ tableauBord.getReferentiel().getVersion(),
+ connection
+ );
+ List<ColumnDefinition> columnDefinitions = fdxTable.tableDefinition(connection).tableDefinition().getColumnDefinitions();
+ FdxTableColumns fdxTableColumns = fdxTable.tableColumns(connection);
+
+ stopIfTableauBordRequestIncorrect(tableauBordRequest, columnDefinitions);
+
+ TableauBord convertedTableauBord
+ = new ConvertedTableauBord(tableauBordRequest, columnDefinitions, fdxTableColumns).tableauBord();
+
+ tableauBord.getTableConfigurations().clear();
+ for (TableConfiguration tableConfiguration : convertedTableauBord.getTableConfigurations()) {
+ tableauBord.getTableConfigurations().add(tableConfiguration);
+ tableConfiguration.setTableauBord(tableauBord);
+ }
+
+ tableauBord.setDescription(convertedTableauBord.getDescription());
+
+ save(tableauBord);
+
+ } catch (BadQueryCriteriaException | LocalDateTimeValueParseError | SQLException | NamingException ex) {
+ throw new CommonApplicationValidationException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public TableauBord get(Long id) {
+ TableauBord tableauBord = getById(id);
+ if (tableauBord == null) {
+ throw new CommonRessourceNotFoundException("La ressource ayant l'identifiant " + id + " est introuvable");
+ }
+ return tableauBord;
+ }
+
+ @Override
+ public void delete(Long id) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public StatResultDto getDatas(User user, String referentielVersion, String codeTypeFichier) {
+ try {
+ return new TableauBordResult(specificTableauBord(user, codeTypeFichier, referentielVersion), dataSource).result();
+ } catch (Exception ex) {
+ throw new CommonApplicationValidationException(ex.getMessage());
+ }
+ }
+
+ @Override
+ public StatResultDto getDatas(String referentielVersion, String codeTypeFichier) {
+ try {
+ return new TableauBordResult(globalTableauBord(codeTypeFichier, referentielVersion), dataSource).result();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationValidationException(ex.getMessage());
+ }
+ }
+
+ private TableauBord globalTableauBord(String codeTypeFichier, String referentielVersion) {
+ TableauBord tableauBord = getDao().findGlobalTableauBord(codeTypeFichier, referentielVersion);
+ if (tableauBord == null) {
+ throw new CommonRessourceNotFoundException("La ressource ayant le fichier " + codeTypeFichier + " et le référentiel " + referentielVersion + " est introuvable");
+ }
+ return tableauBord;
+ }
+
+ private TableauBord specificTableauBord(User user, String codeTypeFichier, String referentielVersion) {
+ TableauBord tableauBord = getDao().findSpecificTableauBord(user.getId(), codeTypeFichier, referentielVersion);
+ if (tableauBord == null) {
+ throw new CommonRessourceNotFoundException("La ressource ayant le fichier " + codeTypeFichier + " et le référentiel " + referentielVersion + " est introuvable");
+ }
+ return tableauBord;
+ }
+
+ private void stopIfRequestIsNotCorrect(String codeTypeFichier, String referentielVersion, TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions) {
+ stopIfTypeFichierNotStructured(codeTypeFichier, referentielVersion);
+ stopIfTableauBordExist(codeTypeFichier, referentielVersion);
+ stopIfTableauBordRequestIncorrect(tableauBordRequest, columnDefinitions);
+ }
+
+ private void stopIfRequestIsNotCorrect(Long userId, String codeTypeFichier, String referentielVersion, TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions) {
+ stopIfTypeFichierNotStructured(codeTypeFichier, referentielVersion);
+ stopIfTableauBordExist(userId, codeTypeFichier, referentielVersion);
+ stopIfTableauBordRequestIncorrect(tableauBordRequest, columnDefinitions);
+ }
+
+ private void stopIfTableauBordRequestIncorrect(TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions) throws CommonApplicationValidationException {
+ String tableauBordError = new TableauBordRequestError(tableauBordRequest, columnDefinitions).error();
+ if (!tableauBordError.isEmpty()) {
+ throw new CommonApplicationValidationException(tableauBordError);
+ }
+ }
+
+ private void stopIfTableauBordExist(Long userId, String codeTypeFichier, String referentielVersion) {
+ if (dao.findSpecificTableauBord(userId, codeTypeFichier, referentielVersion) != null) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour ce typefichier, cet utilisateur et ce référentiel");
+ }
+ }
+
+ private void stopIfTableauBordExist(String codeTypeFichier, String referentielVersion) {
+ if (dao.findGlobalTableauBord(codeTypeFichier, referentielVersion) != null) {
+ throw new CommonApplicationValidationException("Une configuration existe déjà pour ce typefichier, cet utilisateur et ce référentiel");
+ }
+ }
+
+ private void stopIfTypeFichierNotStructured(String codeTypeFichier, String referentielVersion) {
+ if (columnDefinitionManager.findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier).isEmpty()) {
+ throw new CommonApplicationValidationException("Le type de fichier ciblé n'est pas structuré");
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java
new file mode 100644
index 0000000..0ca2619
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordRequestError.java
@@ -0,0 +1,83 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordColumnDto;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableauBordRequestError {
+
+ private final Map<String, ColumnDefinition> columnNameToColumnDefinitions;
+ private final TableauBordRequest tableauBordRequest;
+
+ public TableauBordRequestError(TableauBordRequest tableauBordRequest, List<ColumnDefinition> columnDefinitions) {
+ this.tableauBordRequest = tableauBordRequest;
+ this.columnNameToColumnDefinitions = columnDefinitions
+ .stream()
+ .collect(Collectors.toMap(c -> c.getName(), c -> c));
+ }
+
+ public String error() {
+
+ int index = 1;
+
+ for (TableConfigurationDto configuration : tableauBordRequest.getTableConfigurations()) {
+
+ if (!configuration.getFonctionAggregation().equals(FonctionAggregation.COUNT)) {
+
+ if (configuration.getTargetedColumn() == null) {
+ return "La colonne d'aggregation est obligatoire pour la configuration " + index;
+ }
+
+ if (!hasColumnDefinition(configuration.getTargetedColumn())) {
+ return "La colonne d'aggregation n'est pas présente dans la définition de ce fichier pour la configuration " + index;
+ }
+
+ if (!isNumeric(configuration.getTargetedColumn())) {
+ return "La colonne d'aggregation n'est pas numérique " + index;
+ }
+ }
+
+ if (configuration.getTypeResultatConfiguration().equals(TypeResultatConfiguration.HISTOGRAMME)
+ || configuration.getTypeResultatConfiguration().equals(TypeResultatConfiguration.CAMEMBERT)) {
+
+ if (configuration.getGroupingColumns() == null || configuration.getGroupingColumns().isEmpty()) {
+ return "Il faut au moins une colonne de groupage pour la configuration " + index;
+ }
+
+ for (TableauBordColumnDto column : configuration.getGroupingColumns()) {
+ if (!hasColumnDefinition(column)) {
+ //ERREUR LA COLONNE D'AGGREGATION N'EST PAS DEFINIT POUR CE TYPE DE FICHIER
+ return "La colonne de groupage " + column.getName() + " n'appartient pas à la définition du fichier pour la configuration " + index;
+ }
+ }
+
+ }
+
+ index++;
+
+ }
+
+ return "";
+ }
+
+ private boolean hasColumnDefinition(TableauBordColumnDto column) {
+ return columnNameToColumnDefinitions.containsKey(column.getName());
+ }
+
+ private boolean isNumeric(TableauBordColumnDto column) {
+ return column.getTypeDonnee().equals(TypeDonnee.NUMERIQUE)
+ || column.getTypeDonnee().equals(TypeDonnee.DECIMAL);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordResult.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordResult.java
new file mode 100644
index 0000000..47e1f5f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordResult.java
@@ -0,0 +1,124 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.FdxTable;
+import com.megatim.fdxcommons.tools.utils.CriteriaEntityFromViewToQueryCriterion;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.model.dto.stats.StatListResult;
+import com.megatim.fdxconsultation.model.dto.stats.StatResultDto;
+import com.megatim.fdxconsultation.model.dto.stats.StatScalarResult;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TableauBordResult {
+
+ private final TableauBord tableauBord;
+ private final DataSource dataSource;
+
+ public TableauBordResult(TableauBord tableauBord, DataSource dataSource) {
+ this.tableauBord = tableauBord;
+ this.dataSource = dataSource;
+ }
+
+ public StatResultDto result() throws SQLException, Exception {
+
+ StatResultDto statResultDto = new StatResultDto();
+ statResultDto.setDescription(tableauBord.getDescription());
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ FdxTable fdxTable = FdxConsultationTableFactory.createTable(
+ tableauBord.getTypeFichier().getCode(),
+ tableauBord.getReferentiel().getVersion(),
+ connection
+ );
+
+ for (TableConfiguration tableConfiguration : tableauBord.getTableConfigurations()) {
+
+ List<String> groupingColumns = groupingColumns(tableConfiguration);
+ FonctionAggregation fonctionAggregation = tableConfiguration.getFonctionAggregation();
+
+ List<String[]> results
+ = tableConfiguration.getFonctionAggregation().equals(FonctionAggregation.COUNT)
+ ? fdxTable.count(queryCriterion(tableConfiguration), connection, groupingColumns)
+ : fdxTable.aggregate(connection,
+ tableConfiguration.getTargetedColumn().getName(),
+ groupingColumns, fonctionAggregation,
+ queryCriterion(tableConfiguration)
+ );
+
+ if (!groupingColumns.isEmpty()) { //GROUPE
+
+ StatListResult statListResult = new StatListResult();
+ statListResult.setTypeResultatConfiguration(tableConfiguration.getTypeResultatConfiguration());
+ statListResult.setLibelle(tableConfiguration.getLibelle());
+
+ for (String[] result : results) {
+
+ StatScalarResult statScalarResult = new StatScalarResult();
+ statScalarResult.setValue(result[0]);
+
+ StringBuilder libelle = new StringBuilder();
+ for (int i = 1; i < result.length; i++) { //Colonnes d'aggrégration
+ libelle.append(result[i]);
+ if ((i + 1) < result.length) {
+ libelle.append(" - ");
+ }
+ }
+
+ statScalarResult.setLibelle(libelle.toString());
+ statListResult.getValues().add(statScalarResult);
+
+ }
+
+ statResultDto.getListResults().add(statListResult);
+
+ } else { //ELEMENT
+
+ if (!results.isEmpty()) {
+
+ String[] result = results.get(0);
+
+ StatScalarResult statScalarResult = new StatScalarResult();
+ statScalarResult.setLibelle(tableConfiguration.getLibelle());
+ statScalarResult.setColor(tableConfiguration.getColor());
+ statScalarResult.setValue(result[0]);
+
+ statResultDto.getScalarResults().add(statScalarResult);
+
+ }
+
+ }
+
+ }
+ }
+ return statResultDto;
+
+ }
+
+ private QueryCriterion queryCriterion(TableConfiguration tableConfiguration) {
+ return new CriteriaEntityFromViewToQueryCriterion(
+ new ConvertedCriteriaEntityFromView(
+ tableConfiguration.getCriterion()
+ ).criteriaEntityFromView()
+ ).queryCriterion();
+ }
+
+ private List<String> groupingColumns(TableConfiguration tableConfiguration) {
+ return tableConfiguration
+ .getGroupingColumns()
+ .stream()
+ .map(c -> c.getName())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordUserSpecificSearchManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordUserSpecificSearchManagerImpl.java
new file mode 100644
index 0000000..d518b4e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/stats/TableauBordUserSpecificSearchManagerImpl.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.core.impl.stats;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordUserSpecificSearchManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordUserSpecificSearchDAO;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSpecificSearch;
+import javax.ejb.EJB;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class TableauBordUserSpecificSearchManagerImpl implements TableauBordUserSpecificSearchManager {
+
+ @EJB
+ private TableauBordUserSpecificSearchDAO dao;
+
+ @Override
+ public PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordSpecificSearch> getPaginationDao() {
+ return dao;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/AgentConfigurationEntityManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/AgentConfigurationEntityManagerImpl.java
new file mode 100644
index 0000000..86a8b1e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/AgentConfigurationEntityManagerImpl.java
@@ -0,0 +1,32 @@
+/*
+ * 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.supervision;
+
+import com.megatim.fdxconsultation.core.ifaces.supervision.AgentConfigurationEntityManager;
+import com.megatim.fdxconsultation.dao.ifaces.supervision.AgentConfigurationEntityDAO;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class AgentConfigurationEntityManagerImpl implements AgentConfigurationEntityManager {
+
+ @Inject
+ private AgentConfigurationEntityDAO dao;
+
+ @Override
+ public AgentConfigurationEntityDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public int archiveAgentConfiguration(String code) {
+ return dao.archiveAgentConfiguration(code);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/StandaloneServerStateEntityManagerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/StandaloneServerStateEntityManagerImpl.java
new file mode 100644
index 0000000..60d0c62
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/supervision/StandaloneServerStateEntityManagerImpl.java
@@ -0,0 +1,71 @@
+package com.megatim.fdxconsultation.core.impl.supervision;
+
+import com.fdx.messaging.common.StandaloneServerState;
+import com.megatim.fdxconsultation.core.ifaces.supervision.AgentConfigurationEntityManager;
+import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager;
+import com.megatim.fdxconsultation.dao.ifaces.supervision.StandaloneServerStateEntityDAO;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.fdxconsultation.model.supervision.StatutConfiguration;
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class StandaloneServerStateEntityManagerImpl implements StandaloneServerStateEntityManager {
+
+ @Inject
+ private StandaloneServerStateEntityDAO dao;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ private AgentConfigurationEntityManager agentConfigurationManager;
+
+ private StandaloneServerStateEntity standaloneServerStateEntity;
+
+ @PostConstruct
+ public void init() {
+ standaloneServerStateEntity = dao.getCurrentStandaloneServerStateEntity();
+ }
+
+ @Override
+ public StandaloneServerStateEntityDAO getDao() {
+ return dao;
+ }
+
+ @Override
+ public StandaloneServerStateEntity persistStandaloneConfigurationStateEntity(StandaloneServerState standaloneServerState) {
+
+ StandaloneServerStateEntity serverStateEntity = mapper.standaloneServerStateToStandaloneServerStateEntity(standaloneServerState);
+
+ if (serverStateEntity != null) {
+
+ dao.archiveServerState();
+
+ if (serverStateEntity.getAgentConfigurations() != null && !serverStateEntity.getAgentConfigurations().isEmpty()) {
+ serverStateEntity.getAgentConfigurations().stream().forEach(a -> {
+ agentConfigurationManager.archiveAgentConfiguration(a.getAgentCode());
+ a.setStandaloneServerState(serverStateEntity);
+ a.setStatutConfiguration(StatutConfiguration.EN_COURS);
+ });
+ }
+
+ serverStateEntity.setStatutConfiguration(StatutConfiguration.EN_COURS);
+ standaloneServerStateEntity = save(serverStateEntity);
+ return standaloneServerStateEntity;
+ }
+
+ return null;
+ }
+
+ @Override
+ public StandaloneServerStateEntity getCurrentStandaloneServerStateEntity() {
+ return standaloneServerStateEntity;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/CriteriaEntitySearchUtil.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/CriteriaEntitySearchUtil.java
new file mode 100644
index 0000000..6d4d30d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/CriteriaEntitySearchUtil.java
@@ -0,0 +1,103 @@
+/*
+ * 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.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxcommons.model.search.SearchColumn;
+import com.megatim.fdxcommons.tools.utils.SqlUtilities;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.util.Collections;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CriteriaEntitySearchUtil {
+
+ private CriteriaEntitySearchUtil() {
+
+ }
+
+ public static List<SearchColumn> getSearchColumns(Class<?> classe) {
+ List<SearchColumn> searchColumns = new ArrayList<>();
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+
+ for (Field f : fields) {
+ CriteriaEntitySearch searchAnn = f.getAnnotation(CriteriaEntitySearch.class);
+ if (searchAnn != null && searchAnn.visible()) {
+ SearchColumn searchColumn = new SearchColumn();
+ searchColumn.setLibelle(searchAnn.libelle());
+ searchColumn.setRang(searchAnn.rang());
+ searchColumn.setFieldName(searchAnn.fieldName() == null || searchAnn.fieldName().isEmpty() ? f.getName() : searchAnn.fieldName());
+
+ TypeDonnee typeDonnee = getTypeDonnee(f, searchAnn);
+
+ if (typeDonnee != null) {
+ searchColumn.setTypeDonnee(typeDonnee);
+ searchColumns.add(searchColumn);
+
+ if (typeDonnee.equals(TypeDonnee.ENUM)) {
+ List<String> valuesOfEnum = new ArrayList<>();
+ Class<? extends Enum> enumClasse = (Class<? extends Enum>) f.getType();
+ List<Enum> enums = Arrays.asList(enumClasse.getEnumConstants());
+
+ enums.stream().forEach(e -> valuesOfEnum.add(e.toString()));
+ searchColumn.setValuesOfEnum(valuesOfEnum);
+ }
+ }
+
+ }
+ }
+ Collections.sort(searchColumns, (SearchColumn s1, SearchColumn s2) -> Integer.valueOf(s1.getRang()).compareTo(s2.getRang()));
+ return searchColumns;
+ }
+
+ private static TypeDonnee getTypeDonnee(Field field, CriteriaEntitySearch searchAnn) {
+ Class<?> fieldClass = field.getType();
+ TypeDonnee typeDonnee = null;
+
+ if (fieldClass.isPrimitive()) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+
+ } else if (fieldClass.isEnum()) {
+ typeDonnee = TypeDonnee.ENUM;
+
+ } else if (!fieldClass.isInterface() && !Collection.class.isAssignableFrom(fieldClass) && !Map.class.isAssignableFrom(fieldClass)) {
+ String[] fieldPath = searchAnn.fieldName().split("\\.");
+
+ if (fieldPath.length < 2) {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(fieldClass);
+ } else {
+ typeDonnee = SqlUtilities.typeDonneeFromJavaClass(getFieldType(fieldClass, Arrays.copyOfRange(fieldPath, 1, fieldPath.length)));
+ }
+ }
+
+ return typeDonnee;
+ }
+
+ private static Class<?> getFieldType(Class<?> classe, String[] fieldPath) {
+ String fieldName = fieldPath[0];
+ List<Field> fields = Arrays.asList(classe.getDeclaredFields());
+ Optional<Field> optField = fields.stream().filter(f -> f.getName().equals(fieldName)).findFirst();
+
+ if (optField.isPresent()) {
+ Field field = optField.get();
+ if (fieldPath.length == 1) {
+ return field.getType();
+ } else {
+ return getFieldType(field.getType(), Arrays.copyOfRange(fieldPath, 1, fieldPath.length));
+ }
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/FdxTableUtils.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/FdxTableUtils.java
new file mode 100644
index 0000000..0431f29
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/utils/FdxTableUtils.java
@@ -0,0 +1,38 @@
+/*
+ * 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.utils;
+
+import com.megatim.commons.tools.exceptions.ApplicationServerException;
+import com.megatim.fdxcommons.model.pojo.PageData;
+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.FdxTableRow;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FdxTableUtils {
+
+ private FdxTableUtils() {
+
+ }
+
+ public static List<Map<String, Object>> fdxTableRowToListMap(List<FdxTableRow> rows) {
+ return rows
+ .stream()
+ .map(r -> {
+ Map<String, Object> result = new HashMap<>();
+ r.getDataColumns().forEach(column -> result.put(column.getName(), column.getValue()));
+ return result;
+ })
+ .collect(Collectors.toList());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/.gitignore b/fdx-consultation/fdxconsultation-dao-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/nb-configuration.xml b/fdx-consultation/fdxconsultation-dao-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/pom.xml b/fdx-consultation/fdxconsultation-dao-ifaces/pom.xml
new file mode 100644
index 0000000..b4ae8c2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.dao.ifaces</groupId>
+ <artifactId>fdxconsultation-dao-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.model</groupId>
+ <artifactId>fdxconsultation-model</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.bekosoftware</groupId>
+ <artifactId>genericDAOLayer</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxconsultation-dao-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/CustomDAOWithCriteriaEntityIfaces.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/CustomDAOWithCriteriaEntityIfaces.java
new file mode 100644
index 0000000..736cf9d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/CustomDAOWithCriteriaEntityIfaces.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxconsultation.dao.ifaces.abstracts;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.tables.dto.JpqlQueryElement;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryParam;
+import com.megatim.fdxcommons.tools.database.tables.JpqlTable;
+import java.util.List;
+import javax.persistence.EntityGraph;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CustomDAOWithCriteriaEntityIfaces<T, ID> {
+
+ default T save(T entity) {
+ return getEntityManager().merge(entity);
+ }
+
+ default void delete(T entity) {
+ getEntityManager().remove(entity);
+ }
+
+ public Class<T> getManagedEntityClass();
+
+ public EntityManager getEntityManager();
+
+ public T getById(ID id);
+
+ public default List<T> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+ EntityGraph<T> entityGraph = getEntityManager().createEntityGraph(getManagedEntityClass());
+ fetchEagerFields.stream().forEach(f -> entityGraph.addAttributeNodes(f));
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).selectQuery(orderByFields);
+ System.out.println("****************** query " + jpqlQueryElt.getQuery());
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+ query.setHint("javax.persistence.loadgraph", entityGraph);
+
+ return query.getResultList();
+ }
+
+ public default long count(CriteriaEntityFromView criterion) throws Exception {
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).countQuery();
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ System.out.println("****************** query " + jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+
+ return (long) query.getSingleResult();
+ }
+
+ public default List<T> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+ EntityGraph<T> entityGraph = getEntityManager().createEntityGraph(getManagedEntityClass());
+ fetchEagerFields.stream().forEach(f -> entityGraph.addAttributeNodes(f));
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).selectQuery(orderByFields);
+ System.out.println("****************** query " + jpqlQueryElt.getQuery());
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+
+ query.setHint("javax.persistence.loadgraph", entityGraph);
+ query.setFirstResult((pageNumber - 1) * pageSize);
+ query.setMaxResults(pageSize);
+
+ return query.getResultList();
+ }
+
+ public default void setRealParams(Query query, List<JpqlQueryParam> params) {
+ int index = 1;
+ for (JpqlQueryParam p : params) {
+ query.setParameter(index, p.getParamValue());
+ index++;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithCriteriaEntityDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithCriteriaEntityDAO.java
new file mode 100644
index 0000000..6989390
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithCriteriaEntityDAO.java
@@ -0,0 +1,65 @@
+package com.megatim.fdxconsultation.dao.ifaces.abstracts;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.tools.database.tables.dto.JpqlQueryElement;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryParam;
+import com.megatim.fdxcommons.tools.database.queries.metadata.jpql.JpqlQueryParam;
+import com.megatim.fdxcommons.tools.database.tables.JpqlTable;
+import java.util.List;
+import javax.persistence.EntityGraph;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaginationWithCriteriaEntityDAO<T, ID> {
+
+ public Class<T> getManagedEntityClass();
+
+ public EntityManager getEntityManager();
+
+ public default long count(CriteriaEntityFromView criterion) throws Exception {
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).countQuery();
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+
+ return (long) query.getSingleResult();
+ }
+
+ public default List<T> findWithPagination(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields, Integer pageNumber, Integer pageSize) throws Exception {
+ EntityGraph<T> entityGraph = getEntityManager().createEntityGraph(getManagedEntityClass());
+ fetchEagerFields.stream().forEach(f -> entityGraph.addAttributeNodes(f));
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).selectQuery(orderByFields);
+ System.out.println("findWithPagination---------------" + jpqlQueryElt.getQuery() + "--------------");
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+ query.setHint("javax.persistence.loadgraph", entityGraph);
+ query.setFirstResult((pageNumber - 1) * pageSize);
+ query.setMaxResults(pageSize);
+ return query.getResultList();
+ }
+
+ public default List<T> findAll(CriteriaEntityFromView criterion, List<String> fetchEagerFields, List<OrderByDefinition> orderByFields) throws Exception {
+ EntityGraph<T> entityGraph = getEntityManager().createEntityGraph(getManagedEntityClass());
+ fetchEagerFields.stream().forEach(f -> entityGraph.addAttributeNodes(f));
+ JpqlQueryElement jpqlQueryElt = new JpqlTable(criterion, getManagedEntityClass()).selectQuery(orderByFields);
+ System.out.println("findAll---------------" + jpqlQueryElt.getQuery() + "--------------");
+ Query query = getEntityManager().createQuery(jpqlQueryElt.getQuery());
+ setRealParams(query, jpqlQueryElt.getParameters());
+ query.setHint("javax.persistence.loadgraph", entityGraph);
+ return query.getResultList();
+ }
+
+ public default void setRealParams(Query query, List<JpqlQueryParam> params) {
+ int index = 1;
+ for (JpqlQueryParam p : params) {
+ query.setParameter(index, p.getParamValue());
+ index++;
+ }
+ }
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithSearchEnityDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithSearchEnityDAO.java
new file mode 100644
index 0000000..fe01c3a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/abstracts/PaginationWithSearchEnityDAO.java
@@ -0,0 +1,196 @@
+package com.megatim.fdxconsultation.dao.ifaces.abstracts;
+
+import com.megatim.fdxcommons.dao.ifaces.utils.SearchCriteriaBuilderUtil;
+import com.megatim.fdxcommons.model.search.SearchCriteria;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaginationWithSearchEnityDAO<T, ID, U> {
+
+ public EntityManager getEntityManager();
+
+ public Class<T> getManagedEntityClass();
+
+ public default long countBySearchEntity(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<Long> cq = qb.createQuery(Long.class);
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+ List<Predicate> predicates = createPedicates(searchCriterias, qb, root);
+
+ cq.select(qb.count(root));
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return (long) getEntityManager().createQuery(cq).getSingleResult();
+ }
+
+ public default List<T> all() {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+ cq.select(root);
+
+ return getEntityManager().createQuery(cq).getResultList();
+ }
+
+ public default List<T> findAllBySearchEntity(U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ return getEntityManager().createQuery(cq).getResultList();
+ }
+
+ public default List<T> findAllBySearchEntity(Integer pageNumber, Integer pagesize, U searchEntity) {
+ CriteriaBuilder qb = getEntityManager().getCriteriaBuilder();
+ CriteriaQuery<T> cq = qb.createQuery(getManagedEntityClass());
+
+ Root<T> root = cq.from(getManagedEntityClass());
+
+ List<SearchCriteria> searchCriterias = SearchCriteriaBuilderUtil.getSearchCriterias(searchEntity, getManagedEntityClass(), root, new ArrayList<>());
+
+ List<Predicate> predicates = new ArrayList<>();
+
+ try {
+ predicates = createPedicates(searchCriterias, qb, root);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ cq.select(root);
+ cq.where(predicates.toArray(new Predicate[predicates.size()]));
+
+ TypedQuery<T> typedQuery = getEntityManager().createQuery(cq);
+
+ typedQuery.setFirstResult((pageNumber - 1) * pagesize);
+ typedQuery.setMaxResults(pagesize);
+
+ return typedQuery.getResultList();
+ }
+
+ /**
+ * Méthode qui les prédicats à partir des critères de recherche
+ *
+ * @param searchCriterias
+ * @param cb
+ * @param root
+ * @return
+ */
+ default List<Predicate> createPedicates(List<SearchCriteria> searchCriterias, CriteriaBuilder cb, Root<T> root) {
+ List<Predicate> predicates = new ArrayList<>();
+
+ searchCriterias.parallelStream().forEach(s -> {
+
+ if (s.getFieldValue() != null) {
+ Predicate predicate = null;
+ switch (s.getOperateur()) {
+ case EQUALS:
+ predicate = cb.equal(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case NOT_EQUALS:
+ predicate = cb.notEqual(s.getFrom().get(s.getFieldName()), s.getFieldValue());
+ predicates.add(predicate);
+ break;
+
+ case LIKE:
+ if (s.getFieldValue() instanceof String) {
+ predicate = cb.like(s.getFrom().get(s.getFieldName()), "%" + s.getFieldValue().toString() + "%");
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.gt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+
+ } else if (s.getFieldValue() instanceof String) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), s.getFieldValue().toString());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case GREATER_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.ge(root.get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof String) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), s.getFieldValue().toString());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.lt(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof String) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), s.getFieldValue().toString());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThan(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+
+ case LESS_OR_EQUALS_THAN:
+ if (s.getFieldValue() instanceof Number) {
+ predicate = cb.le(s.getFrom().get(s.getFieldName()), (Number) s.getFieldValue());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof String) {
+ predicate = cb.greaterThanOrEqualTo(root.get(s.getFieldName()), s.getFieldValue().toString());
+ predicates.add(predicate);
+ } else if (s.getFieldValue() instanceof LocalDate) {
+ predicate = cb.lessThanOrEqualTo(s.getFrom().get(s.getFieldName()), (LocalDate) s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ case IN:
+ if (s.getFieldValue() instanceof java.util.Collection) {
+ predicate = s.getFrom().get(s.getFieldName()).in(s.getFieldValue());
+ predicates.add(predicate);
+ }
+ break;
+ default:
+
+ }
+ }
+ });
+
+ return predicates;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/ActionDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/ActionDAO.java
new file mode 100644
index 0000000..2eec29f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/ActionDAO.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.dao.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.administration.Action;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface ActionDAO extends GenericDAO<Action, Long> {
+
+ public final static String SERVICE_NAME = "ActionDAO";
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/HistoriqueMotDePasseDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/HistoriqueMotDePasseDAO.java
new file mode 100644
index 0000000..793ea2b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/HistoriqueMotDePasseDAO.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.dao.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.administration.*;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface HistoriqueMotDePasseDAO extends GenericDAO<HistoriqueMotDePasse, Long> {
+
+ public final static String SERVICE_NAME = "HistoriqueMotDePasseDAO";
+
+ /**
+ * Permet de determiner si le mot de passe existe
+ * @param motDePasse
+ * @param user
+ * @return
+ */
+ public boolean siMotDePasseExiste(String motDePasse, User user);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalActionUtilisateurDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalActionUtilisateurDAO.java
new file mode 100644
index 0000000..d5f7857
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalActionUtilisateurDAO.java
@@ -0,0 +1,17 @@
+/*
+ * 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.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JournalActionUtilisateurDAO extends GenericDAO<JournalActionUtilisateur, Long>, PaginationWithCriteriaEntityDAO<JournalActionUtilisateur, Long>{
+ public JournalActionUtilisateur getById(Long id);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalConnexionUtilisateurDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalConnexionUtilisateurDAO.java
new file mode 100644
index 0000000..7035542
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/JournalConnexionUtilisateurDAO.java
@@ -0,0 +1,19 @@
+/*
+ * 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.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface JournalConnexionUtilisateurDAO extends GenericDAO<JournalConnexionUtilisateur, Long>,
+ PaginationWithCriteriaEntityDAO<JournalConnexionUtilisateur, Long>{
+ public JournalConnexionUtilisateur getById(Long id);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/RoleDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/RoleDAO.java
new file mode 100644
index 0000000..3a32715
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/RoleDAO.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.dao.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.searchentities.RoleSearch;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface RoleDAO extends GenericDAO<Role, Long>, PaginationWithCriteriaEntityDAO<Role, Long>,
+ PaginationWithSearchEnityDAO<Role, Long, RoleSearch>{
+
+ Role getCurrentRole();
+
+ Role getById(Long id);
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/UserDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/UserDAO.java
new file mode 100644
index 0000000..e353b8b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/administration/UserDAO.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.dao.ifaces.administration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface UserDAO extends GenericDAO<User, Long>, PaginationWithCriteriaEntityDAO<User, Long> {
+
+ /**
+ * Permet de recuperer l'utlisateur courant
+ *
+ * @return
+ */
+ User getCurrentUser();
+
+ User getById(Long id);
+
+ /**
+ * Permet de recuperer un utilisateur via ces informations de connexion
+ *
+ * @param username
+ * @param motDePasse
+ * @return
+ */
+ User recuperUtilisateur(String username, String motDePasse);
+
+ /**
+ * Permet de recuperer un utilisateur via ces informations de connexion
+ *
+ * @param username
+ * @return
+ */
+ User recuperUtilisateur(String username);
+
+ /**
+ * Methode Permettant de recuperer tous les utilateurs liés à un même rôle
+ * @param role
+ * @return
+ */
+ List<User> obtenirListeUtilisateursRole(Role role);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/api/token/ApiTokenDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/api/token/ApiTokenDAO.java
new file mode 100644
index 0000000..a87a53b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/api/token/ApiTokenDAO.java
@@ -0,0 +1,17 @@
+package com.megatim.fdxconsultation.dao.ifaces.api.token;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApiTokenDAO extends GenericDAO<ApiToken, Long>, PaginationWithCriteriaEntityDAO<ApiToken, Long> {
+
+ ApiToken getByCodeParticipant(Participant participant);
+
+ ApiToken getByCodeParticipant(String codeParticipant);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/configuration/CodeStatutHttpDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/configuration/CodeStatutHttpDAO.java
new file mode 100644
index 0000000..eafbe06
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/configuration/CodeStatutHttpDAO.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxconsultation.dao.ifaces.configuration;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface CodeStatutHttpDAO extends GenericDAO<CodeStatutHttp, Long>, PaginationWithCriteriaEntityDAO<CodeStatutHttp, Long>{
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionDAO.java
new file mode 100644
index 0000000..14c28f2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionDAO.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionDAO extends CustomDAOWithCriteriaEntityIfaces<DataProduction, Long> {
+
+ List<DataProduction> findByStatutDataProduction(StatutDataProduction statut);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionToDeleteDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionToDeleteDAO.java
new file mode 100644
index 0000000..e78a7f1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/DataProductionToDeleteDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionToDeleteDAO extends CustomDAOWithCriteriaEntityIfaces<DataProductionToDelete, Long>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/metadata/ProductionMetaDataDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/metadata/ProductionMetaDataDAO.java
new file mode 100644
index 0000000..c90b2f6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/dataproduction/metadata/ProductionMetaDataDAO.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ProductionMetaDataDAO extends CustomDAOWithCriteriaEntityIfaces<ProductionMetaData, Long> {
+
+ void deleteById(Long dataProductionId);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/CategoryDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/CategoryDAO.java
new file mode 100644
index 0000000..264ac66
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/CategoryDAO.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.dao.ifaces.documents;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.documents.Category;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface CategoryDAO extends GenericDAO<Category, Long> {
+
+ Category getById(Long id);
+
+ List<Category> loadAll();
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/DocumentDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/DocumentDAO.java
new file mode 100644
index 0000000..9670add
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/documents/DocumentDAO.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.dao.ifaces.documents;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.documents.Document;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DocumentDAO extends GenericDAO<Document, Long> {
+
+ Document getById(Long id);
+
+ List<Document> getByCategory(Long categoryId);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/favoritessearch/FavoriteSearchDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/favoritessearch/FavoriteSearchDAO.java
new file mode 100644
index 0000000..044c3b9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/favoritessearch/FavoriteSearchDAO.java
@@ -0,0 +1,15 @@
+package com.megatim.fdxconsultation.dao.ifaces.favoritessearch;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface FavoriteSearchDAO extends GenericDAO<FavoriteSearch, Long>, PaginationWithCriteriaEntityDAO<FavoriteSearch, Long> {
+
+ List<FavoriteSearch> all(String userName);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/integration/EchecIntegrationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/integration/EchecIntegrationDAO.java
new file mode 100644
index 0000000..48c106a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/integration/EchecIntegrationDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxconsultation.model.integration.EchecIntegration;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface EchecIntegrationDAO extends CustomDAOIfaces<EchecIntegration, Long, EchecIntegration>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/ApiUserActionLogDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/ApiUserActionLogDAO.java
new file mode 100644
index 0000000..2504d55
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/ApiUserActionLogDAO.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.dao.ifaces.log;
+
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+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.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApiUserActionLogDAO extends CustomDAOWithCriteriaEntityIfaces<ApiUserActionLog, Long> {
+
+ List<UserActionStatDto> getByStatut(ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ List<UserActionStatData> getByStatutAndUserName(ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ List<UserActionStatData> getByStatutAndPath(ApiUserActionSummarySearch apiUserActionSummarySearch);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/UserActionLogDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/UserActionLogDAO.java
new file mode 100644
index 0000000..64580ff
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/log/UserActionLogDAO.java
@@ -0,0 +1,16 @@
+/*
+ * 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.ifaces.log;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface UserActionLogDAO extends CustomDAOWithCriteriaEntityIfaces<UserActionLog, Long>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/message/systeme/MessageSystemeDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/message/systeme/MessageSystemeDAO.java
new file mode 100644
index 0000000..1d89ed2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/message/systeme/MessageSystemeDAO.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.dao.ifaces.message.systeme;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxcommons.model.enumeration.*;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.message.systeme.MessageSysteme;
+
+/**
+ * Interface etendue par les interfaces locale et remote de la DAO
+ *
+ * @since Tue Jan 09 15:21:42 WAT 2018
+ *
+ */
+public interface MessageSystemeDAO extends GenericDAO<MessageSysteme, Long> {
+
+ public final static String SERVICE_NAME = "MessageSystemeDAO";
+
+ /**
+ * Permet d'ajouter un message
+ * @param ypeMessageSysteme
+ * @param typeIdMessageSysteme
+ * @param contenu
+ * @param utilisateur
+ */
+ public void ajouter(TypeMessageSysteme ypeMessageSysteme, TypeIdMessageSysteme typeIdMessageSysteme, String contenu, User utilisateur);
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ApplicationSourceDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ApplicationSourceDAO.java
new file mode 100644
index 0000000..d5aa0f6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ApplicationSourceDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxconsultation.model.searchentities.ApplicationSourceSearch;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApplicationSourceDAO extends CustomDAOWithCriteriaEntityIfaces<ApplicationSource, String>{
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ExtensionFichierDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ExtensionFichierDAO.java
new file mode 100644
index 0000000..5f587e9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ExtensionFichierDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ExtensionFichierDAO extends CustomDAOWithCriteriaEntityIfaces<ExtensionFichier, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeNoeudDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeNoeudDAO.java
new file mode 100644
index 0000000..15a9583
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeNoeudDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeNoeudDAO extends CustomDAOWithCriteriaEntityIfaces<GroupeNoeud, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeParticipantDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeParticipantDAO.java
new file mode 100644
index 0000000..d9c2502
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/GroupeParticipantDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeParticipantDAO extends CustomDAOWithCriteriaEntityIfaces<GroupeParticipant, String>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/NoeudDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/NoeudDAO.java
new file mode 100644
index 0000000..34012c7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/NoeudDAO.java
@@ -0,0 +1,37 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import java.util.Optional;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface NoeudDAO extends CustomDAOWithCriteriaEntityIfaces<Noeud, String> {
+
+ @Override
+ EntityManager getEntityManager();
+
+ @Override
+ public default Class<Noeud> getManagedEntityClass() {
+ return (Noeud.class);
+ }
+
+ @Override
+ public default Noeud getById(String id) {
+ Query query = getEntityManager().createQuery("SELECT n from Noeud n"
+ + " LEFT JOIN FETCH n.groupeNoeuds LEFT JOIN FETCH n.routageEnvois LEFT JOIN FETCH n.routageReceptions"
+ + " WHERE n.code = :code");
+ query.setParameter("code", id);
+
+ Optional<Noeud> optionalNoeud = query.getResultList().stream().findFirst();
+ return optionalNoeud.isPresent() ? optionalNoeud.get() : null;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ParticipantDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ParticipantDAO.java
new file mode 100644
index 0000000..f6dcaa7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ParticipantDAO.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ParticipantDAO extends CustomDAOWithCriteriaEntityIfaces<Participant, String>, PaginationWithSearchEnityDAO<Participant, String, ParticipantSearch> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/PaysDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/PaysDAO.java
new file mode 100644
index 0000000..07e886b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/PaysDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaysDAO extends CustomDAOWithCriteriaEntityIfaces<Pays, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ReferentielDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ReferentielDAO.java
new file mode 100644
index 0000000..eb2cbcf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ReferentielDAO.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import java.util.List;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielDAO extends CustomDAOWithCriteriaEntityIfaces<Referentiel, String>,
+ PaginationWithSearchEnityDAO<Referentiel, String, ReferentielSearch> {
+
+ public Referentiel getReferentielEnCours();
+
+ public List<Referentiel> findByStatutReferentiel(StatutReferentiel statutReferentiel);
+
+ public void archiverReferentielEncours();
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/RoutageDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/RoutageDAO.java
new file mode 100644
index 0000000..1244a66
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/RoutageDAO.java
@@ -0,0 +1,73 @@
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.RoutageId;
+import javax.persistence.EntityManager;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RoutageDAO extends CustomDAOWithCriteriaEntityIfaces<Routage, RoutageId> {
+
+ @Override
+ EntityManager getEntityManager();
+
+ @Override
+ public Routage getById(RoutageId id);
+
+ public default List<Participant> getParticipantsForSend(String versionReferentiel, String codeTypeFichier) {
+ List<Participant> participantsEnvoi = new ArrayList<>();
+ Optional<Routage> optRoutage = getEntityManager().createQuery("SELECT r FROM Routage r "
+ + "LEFT JOIN r.participantsEnvoi p "
+ + "LEFT JOIN r.noeudsEnvoi n "
+ + "LEFT JOIN r.groupeParticipantsEnvoi gp LEFT JOIN gp.participants pa "
+ + "LEFT JOIN r.groupeNoeudsEnvoi gn LEFT JOIN gn.noeuds no "
+ + "WHERE r.referentiel.version = :versionReferentiel AND r.typeFichier.code = :codeTypeFichier ")
+ .setParameter("versionReferentiel", versionReferentiel)
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .getResultList().stream().findFirst();
+
+ if (optRoutage.isPresent()) {
+ Routage routage = optRoutage.get();
+ participantsEnvoi.addAll(routage.getParticipantsEnvoi());
+ routage.getNoeudsEnvoi().stream().forEach(n -> {
+ participantsEnvoi.add(n.getParticipant());
+ });
+ routage.getGroupeNoeudsEnvoi().stream().forEach(gn -> gn.getNoeuds().stream().forEach(n -> participantsEnvoi.add(n.getParticipant())));
+ routage.getGroupeParticipantsEnvoi().stream().forEach(gp -> participantsEnvoi.addAll(gp.getParticipants()));
+ }
+
+ return participantsEnvoi;
+ }
+
+ default List<Participant> getParticipantForReceive(String versionReferentiel, String codeTypeFichier) {
+ List<Participant> participantsReception = new ArrayList<>();
+ Optional<Routage> optRoutage = getEntityManager().createQuery("SELECT r FROM Routage r "
+ + "LEFT JOIN r.participantsReception p "
+ + "LEFT JOIN r.noeudsReception n "
+ + "LEFT JOIN r.groupeParticipantsReception gp LEFT JOIN gp.participants pa "
+ + "LEFT JOIN r.groupeNoeudsReception gn LEFT JOIN gn.noeuds no "
+ + "WHERE r.referentiel.version = :versionReferentiel AND r.typeFichier.code = :codeTypeFichier ")
+ .setParameter("versionReferentiel", versionReferentiel)
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .getResultList().stream().findFirst();
+
+ if (optRoutage.isPresent()) {
+ Routage routage = optRoutage.get();
+ participantsReception.addAll(routage.getParticipantsReception());
+ routage.getNoeudsReception().stream().forEach(n -> {
+ participantsReception.add(n.getParticipant());
+ });
+ routage.getGroupeNoeudsReception().stream().forEach(gn -> gn.getNoeuds().stream().forEach(n -> participantsReception.add(n.getParticipant())));
+ routage.getGroupeParticipantsReception().stream().forEach(gp -> participantsReception.addAll(gp.getParticipants()));
+ }
+
+ return participantsReception;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/StructureLigneDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/StructureLigneDAO.java
new file mode 100644
index 0000000..b64942f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/StructureLigneDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface StructureLigneDAO extends CustomDAOWithCriteriaEntityIfaces<StructureLigne, String>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierConsultationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierConsultationDAO.java
new file mode 100644
index 0000000..2d9147e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierConsultationDAO.java
@@ -0,0 +1,17 @@
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.dto.ParticipantToFichierDto;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface TypeFichierConsultationDAO extends TypeFichierDAO, PaginationWithSearchEnityDAO<TypeFichier, String, TypeFichierSearch> {
+
+ List<ParticipantToFichierDto> getParticpantToFichierDto(String username);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierDAO.java
new file mode 100644
index 0000000..51be81c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/TypeFichierDAO.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TypeFichierDAO extends CustomDAOWithCriteriaEntityIfaces<TypeFichier, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierConfigurationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierConfigurationDAO.java
new file mode 100644
index 0000000..6af8fa1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierConfigurationDAO.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfigurationId;
+import com.megatim.fdxconsultation.model.searchentities.ValidateurFichierConfigurationSearch;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ValidateurFichierConfigurationDAO extends CustomDAOWithCriteriaEntityIfaces<ValidateurFichierConfiguration, ValidateurFichierConfigurationId> {
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierDAO.java
new file mode 100644
index 0000000..366e646
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/referentiel/ValidateurFichierDAO.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxconsultation.model.searchentities.ValidateurFichierSearch;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ValidateurFichierDAO extends CustomDAOWithCriteriaEntityIfaces<ValidateurFichier, String>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/PlanificationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/PlanificationDAO.java
new file mode 100644
index 0000000..9db98b4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/PlanificationDAO.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PlanificationDAO extends GenericDAO<Planification, Long>, PaginationWithCriteriaEntityDAO<Planification, Long>{
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/RemoteConfigurationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/RemoteConfigurationDAO.java
new file mode 100644
index 0000000..79bdb3a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/remoteaction/RemoteConfigurationDAO.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithCriteriaEntityDAO;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RemoteConfigurationDAO extends GenericDAO<RemoteConfiguration, String>, PaginationWithCriteriaEntityDAO<RemoteConfiguration, String> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/TypeFichierReferentielSearchDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/TypeFichierReferentielSearchDAO.java
new file mode 100644
index 0000000..fc97721
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/TypeFichierReferentielSearchDAO.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.dao.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierReferentielSearchDAO {
+
+ List<TypeFichier> all(int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity);
+
+ List<TypeFichier> all(String userName, int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity);
+
+ Long count(TypeFichierReferentielSearch searchEntity);
+
+ Long count(String userName, TypeFichierReferentielSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserParticipantDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserParticipantDAO.java
new file mode 100644
index 0000000..a49ce5e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserParticipantDAO.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.dao.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserParticipantDAO {
+
+ List<Participant> findUserParticipantsWithPagination(String userName, ParticipantSearch participantSearch, int pageNumber, int pageSize);
+
+ List<Participant> findAllUserParticipants(String userName, ParticipantSearch participantSearch);
+
+ List<Participant> findUserParticipants(String userName);
+
+ Long countUserParticipants(String userName, ParticipantSearch participantSearch);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserTypeFichierDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserTypeFichierDAO.java
new file mode 100644
index 0000000..185d8f3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/searchs/UserTypeFichierDAO.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.dao.ifaces.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserTypeFichierDAO {
+
+ List<TypeFichier> findUserTypeFichiersWithPagination(String userName, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ List<TypeFichier> findUserTypeFichiers(String userName);
+
+ Long countUserTypeFichiers(String userName, TypeFichierSearch typeFichierSearch);
+
+ List<TypeFichier> findUserTypeFichiersInReferentielWithPagination(String userName, String referentiel, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countUserTypeFichiersInReferentiel(String userName, String referentiel, TypeFichierSearch typeFichierSearch);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/settings/DisplayOptionsDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/settings/DisplayOptionsDAO.java
new file mode 100644
index 0000000..7e01048
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/settings/DisplayOptionsDAO.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.dao.ifaces.settings;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DisplayOptionsDAO extends GenericDAO<DisplayOptions, Long> {
+
+ DisplayOptions current();
+
+ DisplayOptions edit(DisplayOptions entity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/CriteriaEntityPersistedDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/CriteriaEntityPersistedDAO.java
new file mode 100644
index 0000000..2b47365
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/CriteriaEntityPersistedDAO.java
@@ -0,0 +1,16 @@
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface CriteriaEntityPersistedDAO extends CustomDAOWithCriteriaEntityIfaces<CriteriaEntityPersisted, Long> {
+
+ CriteriaEntityPersisted loadSubCriteria(CriteriaEntityPersisted criterion);
+
+ List<CriteriaEntityPersisted> subCriterias(Long id);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/StatististiquesDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/StatististiquesDAO.java
new file mode 100644
index 0000000..3364078
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/StatististiquesDAO.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.dto.stats.StatResultDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordQueryPojo;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface StatististiquesDAO {
+ StatResultDto performSelect(List<TableauBordQueryPojo> queries, String jndiName) throws Exception;
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableConfigurationDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableConfigurationDAO.java
new file mode 100644
index 0000000..c8e0483
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableConfigurationDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableConfigurationDAO extends CustomDAOWithCriteriaEntityIfaces<TableConfiguration, Long> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordColumnDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordColumnDAO.java
new file mode 100644
index 0000000..20e8969
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordColumnDAO.java
@@ -0,0 +1,16 @@
+/*
+ * 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.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordColumnDAO extends CustomDAOWithCriteriaEntityIfaces<TableauBordColumn, Long> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordDAO.java
new file mode 100644
index 0000000..f16ce84
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordDAO.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.dto.ParticipantToFichierDto;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.CustomDAOWithCriteriaEntityIfaces;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSearch;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordDAO extends CustomDAOWithCriteriaEntityIfaces<TableauBord, Long>, PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordSearch> {
+
+ TableauBord findByUserAndTypeFichierAndReferentiel(Long userId, String codeTypeFichier, String referentielversion);
+
+ TableauBord findByTypeConfigurationAndReferentiel(String codeTypeFichier, String referentielVersion, TypeConfigurationTableauBord typeConfiguration);
+
+ List<TableauBord> findByUser(Long userId, String refVersion);
+
+ List<TableauBord> findByReferentiel(String referentielVersion);
+
+ List<ParticipantToFichierDto> tableauBordToTypeFichiers(String userName, String referentielVersion);
+
+ List<ParticipantToFichierDto> tableauBordToTypeFichiers(TypeConfigurationTableauBord tableauBordConfiguration, String referentielVersion);
+
+ List<TypeFichier> tableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countTableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch);
+
+ List<TypeFichier> tableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize);
+
+ Long countTableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch);
+
+ //NEW PARADIGM
+ TableauBord findSpecificTableauBord(Long userId, String codeTypeFichier, String referentielVersion);
+
+ TableauBord findGlobalTableauBord(String codeTypeFichier, String referentielVersion);
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordGlobalSearchDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordGlobalSearchDAO.java
new file mode 100644
index 0000000..f670e85
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordGlobalSearchDAO.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordGlobalSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordGlobalSearchDAO extends PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordGlobalSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordUserSpecificSearchDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordUserSpecificSearchDAO.java
new file mode 100644
index 0000000..dd9abc1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/stats/TableauBordUserSpecificSearchDAO.java
@@ -0,0 +1,12 @@
+package com.megatim.fdxconsultation.dao.ifaces.stats;
+
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSpecificSearch;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordUserSpecificSearchDAO extends PaginationWithSearchEnityDAO<TableauBord, Long, TableauBordSpecificSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/AgentConfigurationEntityDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/AgentConfigurationEntityDAO.java
new file mode 100644
index 0000000..24982ac
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/AgentConfigurationEntityDAO.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.dao.ifaces.supervision;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxconsultation.model.supervision.AgentConfigurationEntity;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AgentConfigurationEntityDAO extends CustomDAOIfaces<AgentConfigurationEntity, Long, AgentConfigurationEntity> {
+ int archiveAgentConfiguration(String code);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/StandaloneServerStateEntityDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/StandaloneServerStateEntityDAO.java
new file mode 100644
index 0000000..c0e9fa6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/StandaloneServerStateEntityDAO.java
@@ -0,0 +1,15 @@
+package com.megatim.fdxconsultation.dao.ifaces.supervision;
+
+import com.megatim.fdxcommons.dao.ifaces.abstracts.CustomDAOIfaces;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface StandaloneServerStateEntityDAO extends CustomDAOIfaces<StandaloneServerStateEntity, Long, StandaloneServerStateEntity> {
+
+ void archiveServerState();
+
+ StandaloneServerStateEntity getCurrentStandaloneServerStateEntity();
+}
diff --git a/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/TransfertDAO.java b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/TransfertDAO.java
new file mode 100644
index 0000000..d03803b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-ifaces/src/main/java/com/megatim/fdxconsultation/dao/ifaces/supervision/TransfertDAO.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxconsultation.dao.ifaces.supervision;
+
+import com.bekosoftware.genericdaolayer.dao.ifaces.GenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.abstracts.PaginationWithSearchEnityDAO;
+import com.megatim.fdxconsultation.model.searchentities.TransfertSearch;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TransfertDAO extends GenericDAO<Transfert, Long>, PaginationWithSearchEnityDAO<Transfert, Long, TransfertSearch> {
+
+ public Long getTotalTransfert(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getTransfertsReussie(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getTransfertsAttente(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getTransfertsEchec(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getTransfertsManuel(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getTransfertsAutomatique(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Double getTailleTotale(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Double getVitesseMoyenne(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public Long getNombreTypeFichier(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin);
+
+ public List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest);
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/.gitignore b/fdx-consultation/fdxconsultation-dao-impl/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-dao-impl/nb-configuration.xml b/fdx-consultation/fdxconsultation-dao-impl/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-dao-impl/pom.xml b/fdx-consultation/fdxconsultation-dao-impl/pom.xml
new file mode 100644
index 0000000..d3148e5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/pom.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.dao.impl</groupId>
+ <artifactId>fdxconsultation-dao-impl</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.dao.ifaces</groupId>
+ <artifactId>fdxconsultation-dao-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.megatimgroup</groupId>
+ <artifactId>mgt-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <name>fdxconsultation-dao-impl</name>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/api/token/ApiTokenDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/api/token/ApiTokenDAOImpl.java
new file mode 100644
index 0000000..61fb391
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/api/token/ApiTokenDAOImpl.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.dao.api.token;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.dao.ifaces.api.token.ApiTokenDAO;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ApiTokenDAOImpl extends AbstractGenericDAO<ApiToken, Long> implements ApiTokenDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<ApiToken> getManagedEntityClass() {
+ return ApiToken.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public ApiToken getByCodeParticipant(Participant participant) {
+ Optional<ApiToken> optional = em.createQuery("SELECT a FROM ApiToken a where a.participant = :participant")
+ .setParameter("participant", participant)
+ .getResultList()
+ .stream()
+ .findFirst();
+ return optional.isPresent() ? optional.get() : null;
+ }
+
+ @Override
+ public ApiToken getByCodeParticipant(String codeParticipant) {
+ Optional<ApiToken> optional = em.createQuery("SELECT a FROM ApiToken a where a.participant.code = :codeParticipant")
+ .setParameter("codeParticipant", codeParticipant)
+ .getResultList()
+ .stream()
+ .findFirst();
+ return optional.isPresent() ? optional.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/ActionDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/ActionDAOImpl.java
new file mode 100644
index 0000000..64363f2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/ActionDAOImpl.java
@@ -0,0 +1,71 @@
+package com.megatim.fdxconsultation.dao.impl.administration;
+
+import com.bekosoftware.genericdaolayer.dao.exceptions.GenericDAOException;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.ActionDAO;
+import com.megatim.fdxconsultation.model.administration.Action;
+import javax.enterprise.context.Dependent;
+import javax.persistence.TransactionRequiredException;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Dependent
+public class ActionDAOImpl extends AbstractGenericDAO<Action, Long> implements ActionDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ActionDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Action> getManagedEntityClass() {
+ return (Action.class);
+ }
+
+ /**
+ * Remove the parameter t in the data base
+ *
+ * @param entityID : id of the entity to delete
+ * @throws GenericDAOException if any problems
+ * @return
+ */
+ @Override
+ public Action delete(Object entityID) {
+
+ //Verification de la validite de entityID
+ if (entityID == null) {
+ throw new GenericDAOException("genericentitymanager.delete.entityID.null");
+ }
+ try {
+ //chargement de l'netite en memoire
+ Action entity = getEntityManager().find(entityClass, entityID);
+ //Execution action de pre-delete
+ processBeforeDelete(entity);
+ //Suppression de entity en BD
+ getEntityManager().createNativeQuery("delete from FS_ACTION where id="+entityID).executeUpdate();
+ //Execution action de post-delete
+ processAfterDelete(entity);
+ return entity;
+ } catch (IllegalArgumentException e) {
+ //e.printStackTrace();
+ throw new GenericDAOException("genericentitymanager.delete.illegalargumentexception", e);
+ } catch (TransactionRequiredException e) {
+ throw new GenericDAOException("genericentitymanager.delete.transactionrequiredexception", e);
+ } catch (Exception e) {
+ throw new GenericDAOException("genericentitymanager.delete.error", e);
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/HistoriqueMotDePasseDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/HistoriqueMotDePasseDAOImpl.java
new file mode 100644
index 0000000..6a4b787
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/HistoriqueMotDePasseDAOImpl.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.dao.impl.administration;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.commons.tools.CommonsTools;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.administration.HistoriqueMotDePasseDAO;
+import com.megatim.fdxconsultation.model.administration.HistoriqueMotDePasse;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Dependent
+public class HistoriqueMotDePasseDAOImpl extends AbstractGenericDAO<HistoriqueMotDePasse, Long> implements HistoriqueMotDePasseDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public HistoriqueMotDePasseDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<HistoriqueMotDePasse> getManagedEntityClass() {
+ return (HistoriqueMotDePasse.class);
+ }
+
+ @Override
+ public boolean siMotDePasseExiste(String motDePasse, User user) {
+
+ //Variables
+ List<HistoriqueMotDePasse> listeMotsDePasse = null;
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ boolean bool = false;
+
+ //On ajoute les critères de recherche
+ requeteur.addEq("user", user);
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+
+ //On recupère le premier mot de passe trouvé
+ listeMotsDePasse = filter(requeteur.getPredicats(), null, null, 0, -1);
+
+ //Si non vide
+ if(listeMotsDePasse != null && !listeMotsDePasse.isEmpty()){
+
+ //On parcourt les mots de passe
+ for(HistoriqueMotDePasse historiqueMotDePasse : listeMotsDePasse){
+
+ try {
+
+ //Si mot de passe matche
+ if(CommonsTools.validerMotDePasse(motDePasse, historiqueMotDePasse.getMotDePasse())){
+
+ //On marque comme trouvé
+ bool = true;
+
+ //On sort
+ break;
+
+ }
+
+ } catch (Exception ex) {
+
+ //On affihce l'erreur
+ ex.printStackTrace();
+
+ }
+
+ }
+
+ }
+ return bool;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalActionUtilisateurDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalActionUtilisateurDAOImpl.java
new file mode 100644
index 0000000..3433371
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalActionUtilisateurDAOImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.administration;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.JournalActionUtilisateurDAO;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class JournalActionUtilisateurDAOImpl extends AbstractGenericDAO<JournalActionUtilisateur, Long> implements JournalActionUtilisateurDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<JournalActionUtilisateur> getManagedEntityClass() {
+ return (JournalActionUtilisateur.class);
+ }
+
+ @Override
+ public JournalActionUtilisateur getById(Long id) {
+ Query query = em.createQuery("SELECT u from JournalActionUtilisateur u WHERE u.id = :id");
+ query.setParameter("id", id);
+ Optional<JournalActionUtilisateur> optionalLog = query.getResultList().stream().findFirst();
+ return optionalLog.isPresent() ? optionalLog.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalConnexionUtilisateurDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalConnexionUtilisateurDAOImpl.java
new file mode 100644
index 0000000..406157c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/JournalConnexionUtilisateurDAOImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.administration;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.administration.*;
+import com.megatim.fdxconsultation.model.administration.*;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class JournalConnexionUtilisateurDAOImpl extends AbstractGenericDAO<JournalConnexionUtilisateur, Long> implements JournalConnexionUtilisateurDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<JournalConnexionUtilisateur> getManagedEntityClass() {
+ return (JournalConnexionUtilisateur.class);
+ }
+
+ @Override
+ public JournalConnexionUtilisateur getById(Long id) {
+ Query query = em.createQuery("SELECT u from JournalConnexionUtilisateur u WHERE u.id = :id");
+ query.setParameter("id", id);
+
+ Optional<JournalConnexionUtilisateur> optionalLog = query.getResultList().stream().findFirst();
+ return optionalLog.isPresent() ? optionalLog.get() : null;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/RoleDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/RoleDAOImpl.java
new file mode 100644
index 0000000..faa16bb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/RoleDAOImpl.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxconsultation.dao.impl.administration;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.administration.RoleDAO;
+import com.megatim.fdxconsultation.model.administration.Role;
+import java.util.Optional;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Dependent
+public class RoleDAOImpl extends AbstractGenericDAO<Role, Long> implements RoleDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public RoleDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Role> getManagedEntityClass() {
+ return (Role.class);
+ }
+
+ @Override
+ public Role getCurrentRole() {
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+ return filter(requeteur.getPredicats(), null, null, 0, 1).stream().findAny().orElse(null);
+ }
+
+ @Override
+ public Role getById(Long id) {
+ Optional<Role> optional = em.createQuery("SELECT r from Role r "
+ + "WHERE r.id = :id")
+ .setParameter("id", id)
+ .getResultList()
+ .stream()
+ .findFirst();
+ return optional.isPresent() ? optional.get() : null;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/UserDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/UserDAOImpl.java
new file mode 100644
index 0000000..bfb65d6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/administration/UserDAOImpl.java
@@ -0,0 +1,140 @@
+package com.megatim.fdxconsultation.dao.impl.administration;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.commons.tools.CommonsTools;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.administration.UserDAO;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import javax.enterprise.context.Dependent;
+
+@Dependent
+public class UserDAOImpl extends AbstractGenericDAO<User, Long> implements UserDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public UserDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<User> getManagedEntityClass() {
+ return (User.class);
+ }
+
+ @Override
+ public User getById(Long id) {
+ Optional<User> optional = em.createQuery("SELECT u from User u"
+ + " LEFT JOIN FETCH u.typeFichiers "
+ + " WHERE u.id = :id")
+ .setParameter("id", id)
+ .getResultList()
+ .stream()
+ .findFirst();;
+ return optional.isPresent() ? optional.get() : null;
+ }
+
+ @Override
+ public User getCurrentUser() {
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+ return filter(requeteur.getPredicats(), null, null, 0, 1).stream().findAny().orElse(null);
+ }
+
+ @Override
+ public User recuperUtilisateur(String username, String motDePasse) {
+ //Variables
+ List<User> resutlats = null;
+ User user = null;
+ boolean isCorrect = false;
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+
+ //On construit la requete
+ requeteur.addEq("userName", username);
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+
+ //On execute la requte
+ resutlats = filter(requeteur.getPredicats(), null, null, 0, 1);
+
+ //Si liste non vide
+ if (resutlats != null && !resutlats.isEmpty()) {
+
+ try {
+
+ //On recupere le user
+ user = resutlats.get(0);
+
+ //On verifie si le mot de passe est correct
+ isCorrect = CommonsTools.validerMotDePasse(motDePasse, user.getPwd());
+
+ //Si incorrect
+ if (!isCorrect) {
+
+ //Utilisateur non trouvé
+ user = null;
+
+ }
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ }
+
+ return user;
+ }
+
+ @Override
+ public User recuperUtilisateur(String username) {
+ Optional<User> optional = em.createQuery("SELECT u from User u"
+ + " LEFT JOIN FETCH u.typeFichiers "
+ + " LEFT JOIN FETCH u.participants "
+ + " WHERE u.userName = :username AND u.typeOperation = :typeOperation")
+ .setParameter("username", username)
+ .setParameter("typeOperation", TypeOperation.AJOUTER)
+ .getResultList()
+ .stream()
+ .findFirst();
+ return optional.isPresent() ? optional.get() : null;
+ }
+
+ @Override
+ public List<User> obtenirListeUtilisateursRole(Role role) {
+
+ //variables
+ List<User> utilisateurs = null;
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+
+ //On construit la requete
+ requeteur.addEq("role", role);
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+
+ //On execute la requte
+ utilisateurs = filter(requeteur.getPredicats(), null, null, 0, -1);
+
+ //Si liste null
+ if (utilisateurs == null) {
+
+ //On crée une instance vide
+ utilisateurs = new ArrayList<User>();
+
+ }
+
+ return utilisateurs;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/configuration/CodeStatutHttpDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/configuration/CodeStatutHttpDAOImpl.java
new file mode 100644
index 0000000..f30b304
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/configuration/CodeStatutHttpDAOImpl.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxconsultation.dao.impl.configuration;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.configuration.CodeStatutHttpDAO;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import javax.enterprise.context.Dependent;
+
+@Dependent
+public class CodeStatutHttpDAOImpl extends AbstractGenericDAO<CodeStatutHttp, Long> implements CodeStatutHttpDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public CodeStatutHttpDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<CodeStatutHttp> getManagedEntityClass() {
+ return (CodeStatutHttp.class);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionDAOImpl.java
new file mode 100644
index 0000000..bcd4cec
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionDAOImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.dataproduction;
+
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.DataProductionDAO;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class DataProductionDAOImpl implements DataProductionDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<DataProduction> getManagedEntityClass() {
+ return DataProduction.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public DataProduction getById(Long id) {
+ Query query = em.createQuery("SELECT d from DataProduction d"
+ + " WHERE d.id = :id");
+ query.setParameter("id", id);
+
+ Optional<DataProduction> optDataProduction = query.getResultList().stream().findFirst();
+ return optDataProduction.isPresent() ? optDataProduction.get() : null;
+ }
+
+ @Override
+ public List<DataProduction> findByStatutDataProduction(StatutDataProduction statut) {
+ return em
+ .createQuery("SELECT d from DataProduction d WHERE d.statutDataProduction = :statut ORDER BY id")
+ .setParameter("statut", statut).getResultList();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionToDeleteDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionToDeleteDAOImpl.java
new file mode 100644
index 0000000..8f63a07
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/DataProductionToDeleteDAOImpl.java
@@ -0,0 +1,38 @@
+/*
+ * 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.dataproduction;
+
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.DataProductionToDeleteDAO;
+import com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class DataProductionToDeleteDAOImpl implements DataProductionToDeleteDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<DataProductionToDelete> getManagedEntityClass() {
+ return DataProductionToDelete.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public DataProductionToDelete getById(Long id) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateDataProductionQuery.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateDataProductionQuery.java
new file mode 100644
index 0000000..19dfcf9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateDataProductionQuery.java
@@ -0,0 +1,63 @@
+package com.megatim.fdxconsultation.dao.impl.dataproduction.metadata;
+
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CreateDataProductionQuery implements QueryMetaData<Void> {
+
+ private final DataProduction dataProduction;
+ private final Connection connection;
+
+ public CreateDataProductionQuery(DataProduction dataProduction, Connection connection) {
+ this.dataProduction = dataProduction;
+ this.connection = connection;
+ }
+
+ private String queryString() {
+ return "INSERT INTO dataproduction(id, dateproduction, referentielversion, codetypefichier"
+ + ", codeparticipant, source, filename, statutdataproduction"
+ + ", filedate, dataProductionType, token, nbreElements"
+ + ", tailleFichier, integrationFileName, dateMiseAJour)"
+ + " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ }
+
+ @Override
+ public Void execute() throws NamingException, SQLException {
+
+ System.out.println("<-------------------------------------------------------------------------->");
+ System.out.println(queryString());
+ System.out.println("<-------------------------------------------------------------------------->");
+
+ try ( PreparedStatement statement = connection.prepareStatement(queryString())) {
+
+ statement.setLong(1, dataProduction.getId());
+ statement.setTimestamp(2, dataProduction.getDateProduction() != null ? Timestamp.valueOf(dataProduction.getDateProduction()) : null);
+ statement.setString(3, dataProduction.getReferentielVersion());
+ statement.setString(4, dataProduction.getCodeTypeFichier());
+ statement.setString(5, dataProduction.getCodeParticipant());
+ statement.setString(6, dataProduction.getSource().name());
+ statement.setString(7, dataProduction.getFileName());
+ statement.setString(8, dataProduction.getStatutDataProduction().name());
+ statement.setTimestamp(9, dataProduction.getFileDate() != null ? Timestamp.valueOf(dataProduction.getFileDate()) : null);
+ statement.setString(10, dataProduction.getDataProductionType().name());
+ statement.setString(11, dataProduction.getToken());
+ statement.setLong(12, dataProduction.getNbreElements());
+ statement.setLong(13, dataProduction.getTailleFichier());
+ statement.setString(14, dataProduction.getIntegrationFileName());
+ statement.setTimestamp(15, dataProduction.getDateMiseAJour() != null ? Timestamp.valueOf(dataProduction.getDateMiseAJour()) : null);
+
+ statement.executeUpdate();
+
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateProductionMetaDataQuery.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateProductionMetaDataQuery.java
new file mode 100644
index 0000000..f578a1e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/CreateProductionMetaDataQuery.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.dao.impl.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionType;
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxcommons.tools.database.contrat.QueryMetaData;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class CreateProductionMetaDataQuery implements QueryMetaData<Void> {
+
+ private final ProductionMetaData pmd;
+ private final DataProductionType dataProductionType;
+ private final Connection connection;
+ private final int BATCH_SIZE = 100_000;
+
+ public CreateProductionMetaDataQuery(ProductionMetaData pmd, DataProductionType dataProductionType, Connection connection) {
+ this.pmd = pmd;
+ this.dataProductionType = dataProductionType;
+ this.connection = connection;
+ }
+
+ @Override
+ public Void execute() throws NamingException, SQLException {
+
+ if (dataProductionType.equals(DataProductionType.ADD)) {
+ executeAddDataType();
+
+ } else if (dataProductionType.equals(DataProductionType.UPDATE)) {
+ executeUpdateDataType();
+ }
+ return null;
+ }
+
+ private void executeAddDataType() throws SQLException {
+ System.out.println("--------------------- pmd.getNbreElts() = " + pmd.getNbreElts());
+ try ( PreparedStatement statement = connection.prepareStatement(productionMetaDataQueryString())) {
+
+ statement.setLong(1, pmd.getProductionId());
+ statement.setLong(2, pmd.getStartIndex());
+ statement.setLong(3, pmd.getNbreElts());
+ statement.setString(4, pmd.getDataProductionType());
+
+ statement.executeUpdate();
+
+ }
+ }
+
+ private void executeUpdateDataType() throws SQLException {
+ try ( PreparedStatement metaDataStatement = connection.prepareStatement(productionMetaDataQueryString()); PreparedStatement indexesStatement = connection.prepareStatement(productionMetaDataIndexesQuery())) {
+ metaDataStatement.executeUpdate();
+ executeInBatch(indexesStatement);
+ indexesStatement.executeBatch();
+ }
+ }
+
+ private String productionMetaDataQueryString() {
+ return "INSERT INTO ProductionMetaData(productionId, startIndex, nbreElts, dataProductionType)"
+ + " VALUES(?, ?, ?, ?)";
+ }
+
+ private String productionMetaDataIndexesQuery() {
+ return "INSERT INTO productionMetaData_indexes(productionId, indexes) VALUES(?, ?)";
+ }
+
+ private void executeInBatch(PreparedStatement preparedStatement) throws SQLException {
+ int count = 0;
+
+ for (Long l : pmd.getIndexes()) {
+ preparedStatement.setLong(1, pmd.getProductionId());
+ preparedStatement.setLong(2, l);
+ preparedStatement.addBatch();
+
+ if (++count % BATCH_SIZE == 0) {
+ preparedStatement.executeBatch();
+ }
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/ProductionMetaDataDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/ProductionMetaDataDAOImpl.java
new file mode 100644
index 0000000..c2066af
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/dataproduction/metadata/ProductionMetaDataDAOImpl.java
@@ -0,0 +1,52 @@
+/*
+ * 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.dataproduction.metadata;
+
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaDataId;
+import com.megatim.fdxconsultation.dao.ifaces.dataproduction.metadata.ProductionMetaDataDAO;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ProductionMetaDataDAOImpl implements ProductionMetaDataDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<ProductionMetaData> getManagedEntityClass() {
+ return ProductionMetaData.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public ProductionMetaData getById(Long id) {
+ Query query = em.createQuery("SELECT p FROM ProductionMetaData p WHERE p.productionId = :id");
+ query.setParameter("id", id);
+
+ Optional<ProductionMetaData> optMetaData = query.getResultList().stream().findFirst();
+ return optMetaData.isPresent() ? optMetaData.get() : null;
+ }
+
+ @Override
+ public void deleteById(Long dataProductionId) {
+ Query query = em.createQuery("DELETE FROM ProductionMetaData p WHERE p.productionId = :dataProductionId");
+ query.setParameter("dataProductionId", dataProductionId);
+ query.executeUpdate();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/ColumnDefinitionDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/ColumnDefinitionDAOImpl.java
new file mode 100644
index 0000000..002b874
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/ColumnDefinitionDAOImpl.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.dao.impl.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.integration.ColumnDefinitionDAO;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import java.util.List;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ColumnDefinitionDAOImpl implements ColumnDefinitionDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ColumnDefinition> getManagedEntityClass() {
+ return (ColumnDefinition.class);
+ }
+
+ @Override
+ public List<ColumnDefinition> findByReferentielAndTypeFichier(String referentielVersion, String codeTypeFichier) {
+ return em
+ .createQuery("SELECT c FROM ColumnDefinition c"
+ + " WHERE c.referentielVersion = :referentielVersion AND c.codeTypeFichier = :codeTypeFichier")
+ .setParameter("referentielVersion", referentielVersion)
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .getResultList();
+
+ }
+
+ @Override
+ public List<Tuple> byRefVersionAndByTypeFichier() {
+ String query = "SELECT codetypefichier, referentielversion"
+ + " FROM columndefinition"
+ + " GROUP BY referentielversion, codetypefichier"
+ + " ORDER BY referentielversion";
+ return em.createNativeQuery(query, Tuple.class).getResultList();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/EchecIntegrationDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/EchecIntegrationDAOImpl.java
new file mode 100644
index 0000000..56bb3c0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/EchecIntegrationDAOImpl.java
@@ -0,0 +1,46 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxconsultation.dao.ifaces.integration.EchecIntegrationDAO;
+import com.megatim.fdxconsultation.model.integration.EchecIntegration;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class EchecIntegrationDAOImpl implements EchecIntegrationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<EchecIntegration> getManagedEntityClass() {
+ return EchecIntegration.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public EchecIntegration getById(Long id) {
+ Query query = em.createQuery("SELECT e from EchecIntegration e"
+ + " WHERE e.id = :id");
+ query.setParameter("id", id);
+
+ Optional<EchecIntegration> optEchecIntegration = query.getResultList().stream().findFirst();
+ return optEchecIntegration.isPresent() ? optEchecIntegration.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/TableDefinitionDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/TableDefinitionDAOImpl.java
new file mode 100644
index 0000000..e907084
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/integration/TableDefinitionDAOImpl.java
@@ -0,0 +1,31 @@
+/*
+ * 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.integration;
+
+import com.megatim.fdxcommons.dao.ifaces.integration.TableDefinitionDAO;
+import com.megatim.fdxcommons.model.integration.TableDefinition;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableDefinitionDAOImpl implements TableDefinitionDAO {
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<TableDefinition> getManagedEntityClass() {
+ return (TableDefinition.class);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
new file mode 100644
index 0000000..9f61584
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/ApiUserActionLogDAOImpl.java
@@ -0,0 +1,156 @@
+/*
+ * 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());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/UserActionLogDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/UserActionLogDAOImpl.java
new file mode 100644
index 0000000..29df89b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/UserActionLogDAOImpl.java
@@ -0,0 +1,44 @@
+/*
+ * 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.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.dao.ifaces.log.UserActionLogDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class UserActionLogDAOImpl implements UserActionLogDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<UserActionLog> getManagedEntityClass() {
+ return (UserActionLog.class);
+ }
+
+ @Override
+ public UserActionLog getById(Long id) {
+ Query query = em.createQuery("SELECT u from UserActionLog u WHERE u.id = :id");
+ query.setParameter("id", id);
+
+ Optional<UserActionLog> optionalLog = query.getResultList().stream().findFirst();
+ return optionalLog.isPresent() ? optionalLog.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/util/QueryExtendsWithApiUserActionSummarySearch.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/util/QueryExtendsWithApiUserActionSummarySearch.java
new file mode 100644
index 0000000..c8ecffa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/log/util/QueryExtendsWithApiUserActionSummarySearch.java
@@ -0,0 +1,106 @@
+package com.megatim.fdxconsultation.dao.impl.log.util;
+
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class QueryExtendsWithApiUserActionSummarySearch {
+
+ private final ApiUserActionSummarySearch apiUserActionSummarySearch;
+ private final String selectQueryString;
+ private final String whereQueryString;
+ private final String groupQueryString;
+ private final EntityManager em;
+
+ public QueryExtendsWithApiUserActionSummarySearch(
+ ApiUserActionSummarySearch apiUserActionSummarySearch,
+ EntityManager em,
+ String selectQueryString,
+ String whereQueryString,
+ String groupQueryString) {
+
+ this.apiUserActionSummarySearch = apiUserActionSummarySearch;
+ this.selectQueryString = selectQueryString;
+ this.whereQueryString = whereQueryString;
+ this.groupQueryString = groupQueryString;
+ this.em = em;
+ }
+
+ public TypedQuery<Object[]> query() {
+
+ TypedQuery<Object[]> query = em.createQuery(queryString(), Object[].class);
+ setParameter(query);
+ return query;
+ }
+
+ private void setParameter(TypedQuery<Object[]> query) {
+
+ if (apiUserActionSummarySearch.getParticipant() != null) {
+ query.setParameter("participant", apiUserActionSummarySearch.getParticipant().getCode());
+ }
+
+ if (apiUserActionSummarySearch.getDateDebut() != null) {
+ query.setParameter("dateDebut", apiUserActionSummarySearch.getDateDebut());
+ }
+
+ if (apiUserActionSummarySearch.getDateFin() != null) {
+ query.setParameter("dateFin", apiUserActionSummarySearch.getDateFin().toLocalDate().atTime(23, 59, 59));
+ }
+
+ }
+
+ private String queryString() {
+
+ StringBuilder stringBuilder = new StringBuilder(selectQueryString);
+
+ boolean result = withWhereString();
+ if (result) {
+ stringBuilder.append(" ").append(whereQueryString);
+ }
+
+ if (apiUserActionSummarySearch.getParticipant() != null) {
+ if (result) {
+ stringBuilder.append(" AND ");
+ } else {
+ stringBuilder.append(" WHERE ");
+ }
+
+ stringBuilder.append("u.userName = :participant");
+ result = true;
+ }
+
+ if (apiUserActionSummarySearch.getDateDebut() != null) {
+ if (result) {
+ stringBuilder.append(" AND ");
+ } else {
+ stringBuilder.append(" WHERE ");
+ }
+
+ stringBuilder.append("u.dateAction >= :dateDebut");
+ result = true;
+ }
+
+ if (apiUserActionSummarySearch.getDateFin() != null) {
+ if (result) {
+ stringBuilder.append(" AND ");
+ } else {
+ stringBuilder.append(" WHERE ");
+ }
+
+ stringBuilder.append("u.dateAction <= :dateFin");
+ }
+
+ stringBuilder.append(" ").append(groupQueryString);
+
+ return stringBuilder.toString();
+ }
+
+ private boolean withWhereString() {
+ return whereQueryString != null && !whereQueryString.isEmpty();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/message/systeme/MessageSystemeDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/message/systeme/MessageSystemeDAOImpl.java
new file mode 100644
index 0000000..f5ec29b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/message/systeme/MessageSystemeDAOImpl.java
@@ -0,0 +1,56 @@
+package com.megatim.fdxconsultation.dao.impl.message.systeme;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxcommons.model.enumeration.*;
+import com.megatim.fdxconsultation.dao.ifaces.message.systeme.MessageSystemeDAO;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.message.systeme.MessageSysteme;
+import java.util.Date;
+import javax.enterprise.context.Dependent;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Dependent
+public class MessageSystemeDAOImpl extends AbstractGenericDAO<MessageSysteme, Long> implements MessageSystemeDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public MessageSystemeDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<MessageSysteme> getManagedEntityClass() {
+ return (MessageSysteme.class);
+ }
+
+ @Override
+ public void ajouter(TypeMessageSysteme typeMessageSysteme, TypeIdMessageSysteme typeIdMessageSysteme, String contenu, User utilisateur) {
+
+ //Variables
+ MessageSysteme messageSysteme = new MessageSysteme();
+ Date dateCourante = new Date();
+
+ //On inserre les informations complementaires
+ messageSysteme.setTypeMessageSysteme(typeMessageSysteme);
+ messageSysteme.setTypeIdMessageSysteme(typeIdMessageSysteme);
+ messageSysteme.setContenu(contenu);
+ messageSysteme.setUtilisateurCreation(utilisateur != null ? utilisateur.getUserName() : null);
+ messageSysteme.setDateCreation(dateCourante);
+ messageSysteme.setUtilisateur(utilisateur);
+
+ //On save le message
+ save(messageSysteme);
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ApplicationSourceDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ApplicationSourceDAOImpl.java
new file mode 100644
index 0000000..6097517
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ApplicationSourceDAOImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ApplicationSource;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ApplicationSourceDAO;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ApplicationSourceDAOImpl implements ApplicationSourceDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ApplicationSourceDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ApplicationSource> getManagedEntityClass() {
+ return (ApplicationSource.class);
+ }
+
+ @Override
+ public ApplicationSource getById(String id) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ExtensionFichierDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ExtensionFichierDAOImpl.java
new file mode 100644
index 0000000..4c9cfd0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ExtensionFichierDAOImpl.java
@@ -0,0 +1,51 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ExtensionFichierDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ExtensionFichierDAOImpl implements ExtensionFichierDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ExtensionFichierDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ExtensionFichier> getManagedEntityClass() {
+ return (ExtensionFichier.class);
+ }
+
+ @Override
+ public ExtensionFichier getById(String id) {
+ Query query = em.createQuery("SELECT e FROM ExtensionFichier e where e.extension = :extension");
+ query.setParameter("extension", id);
+
+ Optional<ExtensionFichier> optionalExtensionFichier = query.getResultList().stream().findFirst();
+
+ if (optionalExtensionFichier.isPresent()) {
+ return optionalExtensionFichier.get();
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeNoeudDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeNoeudDAOImpl.java
new file mode 100644
index 0000000..8bdecb2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeNoeudDAOImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.GroupeNoeudDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class GroupeNoeudDAOImpl implements GroupeNoeudDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public GroupeNoeudDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<GroupeNoeud> getManagedEntityClass() {
+ return (GroupeNoeud.class);
+ }
+
+ @Override
+ public GroupeNoeud getById(String id) {
+ Query query = em.createQuery("SELECT gn FROM GroupeNoeud gn"
+ + " LEFT JOIN FETCH gn.noeuds LEFT JOIN FETCH gn.routageEnvois LEFT JOIN FETCH gn.routageReceptions"
+ + " WHERE gn.code = :code");
+ query.setParameter("code", id);
+
+ Optional<GroupeNoeud> optionalGroupeNoeud = query.getResultList().stream().findFirst();
+
+ if (optionalGroupeNoeud.isPresent()) {
+ return optionalGroupeNoeud.get();
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeParticipantDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeParticipantDAOImpl.java
new file mode 100644
index 0000000..4b9b792
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/GroupeParticipantDAOImpl.java
@@ -0,0 +1,52 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.GroupeParticipantDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class GroupeParticipantDAOImpl implements GroupeParticipantDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public GroupeParticipantDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<GroupeParticipant> getManagedEntityClass() {
+ return (GroupeParticipant.class);
+ }
+
+ @Override
+ public GroupeParticipant getById(String id) {
+ Query query = em.createQuery("SELECT gp FROM GroupeParticipant gp"
+ + " LEFT JOIN FETCH gp.participants LEFT JOIN FETCH gp.routageEnvois LEFT JOIN FETCH gp.routageReceptions"
+ + " WHERE gp.code = :code");
+ query.setParameter("code", id);
+
+ Optional<GroupeParticipant> optionalGroupeParticipant = query.getResultList().stream().findFirst();
+ if (optionalGroupeParticipant.isPresent()) {
+ return optionalGroupeParticipant.get();
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/NoeudDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/NoeudDAOImpl.java
new file mode 100644
index 0000000..4b43dda
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/NoeudDAOImpl.java
@@ -0,0 +1,29 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.NoeudDAO;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class NoeudDAOImpl implements NoeudDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public NoeudDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ParticipantDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ParticipantDAOImpl.java
new file mode 100644
index 0000000..4527c52
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ParticipantDAOImpl.java
@@ -0,0 +1,49 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ParticipantDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ParticipantDAOImpl implements ParticipantDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ParticipantDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Participant> getManagedEntityClass() {
+ return (Participant.class);
+ }
+
+ @Override
+ public Participant getById(String id) {
+ Query query = em.createQuery("SELECT p from Participant p"
+ + " LEFT JOIN FETCH p.groupeParticipants LEFT JOIN FETCH p.routageEnvois "
+ + " LEFT JOIN FETCH p.routageReceptions LEFT JOIN FETCH p.noeuds"
+ + " WHERE p.code = :code");
+ query.setParameter("code", id);
+
+ Optional<Participant> optionalParticipant = query.getResultList().stream().findFirst();
+ return optionalParticipant.isPresent() ? optionalParticipant.get() : null;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/PaysDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/PaysDAOImpl.java
new file mode 100644
index 0000000..75602e3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/PaysDAOImpl.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxconsultation.dao.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.PaysDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class PaysDAOImpl implements PaysDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public PaysDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Pays> getManagedEntityClass() {
+ return (Pays.class);
+ }
+
+ @Override
+ public Pays getById(String id) {
+ Query query = em.createQuery("SELECT p from Pays p"
+ + " WHERE p.code = :code");
+ query.setParameter("code", id);
+
+ Optional<Pays> optionalPays = query.getResultList().stream().findFirst();
+ return optionalPays.isPresent() ? optionalPays.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ReferentielDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ReferentielDAOImpl.java
new file mode 100644
index 0000000..652f6de
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ReferentielDAOImpl.java
@@ -0,0 +1,77 @@
+package com.megatim.fdxconsultation.dao.impl.referentiel;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ReferentielDAOImpl implements ReferentielDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ReferentielDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Referentiel> getManagedEntityClass() {
+ return (Referentiel.class);
+ }
+
+ @Override
+ public Referentiel getById(String id) {
+ Query query = em.createQuery("SELECT r from Referentiel r"
+ + " LEFT JOIN FETCH r.extensionFichiers LEFT JOIN FETCH r.applicationSources "
+ + " LEFT JOIN FETCH r.routages LEFT JOIN FETCH r.participants"
+ + " LEFT JOIN FETCH r.validateurFichierConfigurations LEFT JOIN FETCH r.noeuds"
+ + " LEFT JOIN FETCH r.groupeParticipants LEFT JOIN FETCH r.groupeNoeuds"
+ + " LEFT JOIN FETCH r.pays"
+ + " WHERE r.version = :version");
+ query.setParameter("version", id);
+
+ Optional<Referentiel> optionalReferentiel = query.getResultList().stream().findFirst();
+ return optionalReferentiel.isPresent() ? optionalReferentiel.get() : null;
+ }
+
+ @Override
+ public Referentiel getReferentielEnCours() {
+ Query query = em.createQuery("SELECT r FROM Referentiel r where r.statutReferentiel = :param");
+ query.setParameter("param", StatutReferentiel.EN_COURS);
+
+ Optional<Referentiel> optionalRef = ((List<Referentiel>) query.getResultList()).stream().findFirst();
+ return optionalRef.isPresent() ? optionalRef.get() : null;
+ }
+
+ @Override
+ public List<Referentiel> findByStatutReferentiel(StatutReferentiel statutReferentiel) {
+ Query query = em.createQuery("SELECT r FROM Referentiel r where r.statutReferentiel = :param");
+ query.setParameter("param", statutReferentiel);
+
+ return ((List<Referentiel>) query.getResultList());
+ }
+
+ @Override
+ public void archiverReferentielEncours() {
+ Query query = em.createQuery("UPDATE Referentiel r set statutReferentiel = :nouveauStatut where r.statutReferentiel = :param");
+ query.setParameter("nouveauStatut", StatutReferentiel.ARCHIVE);
+ query.setParameter("param", StatutReferentiel.EN_COURS);
+
+ int nb = query.executeUpdate();
+ System.out.println("Nb lines updated = " + nb);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/RoutageDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/RoutageDAOImpl.java
new file mode 100644
index 0000000..ec90332
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/RoutageDAOImpl.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.dao.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.referentiel.RoutageId;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.RoutageDAO;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class RoutageDAOImpl implements RoutageDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public RoutageDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Routage> getManagedEntityClass() {
+ return (Routage.class);
+ }
+
+ @Override
+ public Routage getById(RoutageId id) {
+
+ Query query = getEntityManager().createQuery("SELECT r FROM Routage r"
+ + " LEFT JOIN FETCH r.groupeNoeudsEnvoi LEFT JOIN FETCH r.groupeNoeudsReception"
+ + " LEFT JOIN FETCH r.groupeParticipantsEnvoi LEFT JOIN FETCH r.groupeParticipantsReception"
+ + " LEFT JOIN FETCH r.noeudsEnvoi LEFT JOIN FETCH r.noeudsReception"
+ + " LEFT JOIN FETCH r.groupeNoeudsReception LEFT JOIN FETCH r.participantsReception"
+ + " LEFT JOIN FETCH r.groupeParticipantsReception LEFT JOIN FETCH r.participantsEnvoi"
+ + " WHERE r.referentiel.version = :referentielVersion AND r.typeFichier.code = :codeTypeFichier");
+
+ query.setParameter("codeTypeFichier", id.getTypeFichier());
+ query.setParameter("referentielVersion", id.getReferentiel());
+
+ return (Routage) query
+ .getResultList()
+ .stream()
+ .findFirst()
+ .orElse(null);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/StructureLigneDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/StructureLigneDAOImpl.java
new file mode 100644
index 0000000..c7f42d9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/StructureLigneDAOImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.StructureLigne;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.StructureLigneDAO;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class StructureLigneDAOImpl implements StructureLigneDAO{
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public StructureLigneDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<StructureLigne> getManagedEntityClass() {
+ return (StructureLigne.class);
+ }
+
+ @Override
+ public StructureLigne getById(String id) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/TypeFichierDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/TypeFichierDAOImpl.java
new file mode 100644
index 0000000..ccac5db
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/TypeFichierDAOImpl.java
@@ -0,0 +1,82 @@
+package com.megatim.fdxconsultation.dao.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.TypeFichierConsultationDAO;
+import com.megatim.fdxconsultation.model.dto.ParticipantToFichierDto;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.ejb.Stateless;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TypeFichierDAOImpl implements TypeFichierConsultationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Inject
+ private ReferentielDAO referentielDAO;
+
+ public TypeFichierDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<TypeFichier> getManagedEntityClass() {
+ return (TypeFichier.class);
+ }
+
+ @Override
+ public TypeFichier getById(String id) {
+ Query query = em.createQuery("SELECT t from TypeFichier t"
+ + " LEFT JOIN FETCH t.routages LEFT JOIN FETCH t.validateurFichiers "
+ + " LEFT JOIN FETCH t.validateurFichierConfigurations"
+ + " WHERE t.code = :code");
+ query.setParameter("code", id);
+
+ Optional<TypeFichier> optionalTypeFichier = query.getResultList().stream().findFirst();
+ return optionalTypeFichier.isPresent() ? optionalTypeFichier.get() : null;
+ }
+
+ @Override
+ public List<ParticipantToFichierDto> getParticpantToFichierDto(String username) {
+ String referentielVersion = getReferentielVersion();
+ if (referentielVersion == null) {
+ return new ArrayList<>();
+ }
+
+ List<Tuple> results = em.createQuery("SELECT t.participant.code, t.code AS code "
+ + "FROM TypeFichier t "
+ + "WHERE code IN (SELECT c.codeTypeFichier FROM ColumnDefinition c WHERE c.referentielVersion = :referentielVersion) "
+ + "AND t IN (SELECT t1 FROM User u LEFT JOIN u.typeFichiers t1 WHERE u.userName = :username)", Tuple.class)
+ .setParameter("referentielVersion", referentielVersion)
+ .setParameter("username", username)
+ .getResultList();
+
+ return results.stream().map(t -> {
+ ParticipantToFichierDto dto = new ParticipantToFichierDto(t.get(0, String.class), t.get(1, String.class));
+ return dto;
+ }).collect(Collectors.toList());
+ }
+
+ private String getReferentielVersion() {
+ Referentiel refEncours = referentielDAO.getReferentielEnCours();
+ return refEncours != null ? refEncours.getVersion() : null;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierConfigurationDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierConfigurationDAOImpl.java
new file mode 100644
index 0000000..767efdb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierConfigurationDAOImpl.java
@@ -0,0 +1,55 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfigurationId;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ValidateurFichierConfigurationDAO;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ValidateurFichierConfigurationDAOImpl implements ValidateurFichierConfigurationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ValidateurFichierConfigurationDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ValidateurFichierConfiguration> getManagedEntityClass() {
+ return (ValidateurFichierConfiguration.class);
+ }
+
+ @Override
+ public ValidateurFichierConfiguration getById(ValidateurFichierConfigurationId id) {
+ Query query = em.createQuery("SELECT v FROM ValidateurFichierConfiguration v WHERE v.referentiel.version = :referentielVersion"
+ + " AND v.typeFichier.code = :codeTypeFichier");
+
+ query.setParameter("codeTypeFichier", id.getTypeFichier());
+ query.setParameter("referentielVersion", id.getReferentiel());
+
+ Optional<ValidateurFichierConfiguration> optionalValFichier = query.getResultList().stream().findFirst();
+
+ if (optionalValFichier.isPresent()) {
+ return optionalValFichier.get();
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierDAOImpl.java
new file mode 100644
index 0000000..24354ed
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/ValidateurFichierDAOImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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.referentiel;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.tools.database.tables.dto.JpqlQueryElement;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.model.referentiel.ValidateurFichier;
+import com.megatim.fdxconsultation.dao.ifaces.referentiel.ValidateurFichierDAO;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ValidateurFichierDAOImpl implements ValidateurFichierDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ public ValidateurFichierDAOImpl() {
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<ValidateurFichier> getManagedEntityClass() {
+ return (ValidateurFichier.class);
+ }
+
+ @Override
+ public ValidateurFichier getById(String id) {
+ Query query = em.createQuery("SELECT v from ValidateurFichier v"
+ + " LEFT JOIN FETCH v.structureLignes"
+ + " WHERE t.id = :id");
+ query.setParameter("id", id);
+
+ Optional<ValidateurFichier> optionalValidateurFichier = query.getResultList().stream().findFirst();
+ return optionalValidateurFichier.isPresent() ? optionalValidateurFichier.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/historique/ReferentielIntegrationHistoriqueDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/historique/ReferentielIntegrationHistoriqueDAOImpl.java
new file mode 100644
index 0000000..4fdb5ec
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/historique/ReferentielIntegrationHistoriqueDAOImpl.java
@@ -0,0 +1,72 @@
+/*
+ * 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.referentiel.historique;
+
+import com.megatim.fdxcommons.dao.ifaces.referentiel.historique.ReferentielIntegrationHistoriqueDAO;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
+import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistoriqueId;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class ReferentielIntegrationHistoriqueDAOImpl implements ReferentielIntegrationHistoriqueDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<ReferentielIntegrationHistorique> getManagedEntityClass() {
+ return ReferentielIntegrationHistorique.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public ReferentielIntegrationHistorique getById(ReferentielIntegrationHistoriqueId id) {
+ Optional<ReferentielIntegrationHistorique> optRefInt = em
+ .createQuery("SELECT r FROM ReferentielIntegrationHistorique r"
+ + " WHERE r.codeTypeFichier = :codeTypeFichier AND r.referentielVersion = :refVersion")
+ .setParameter("codeTypeFichier", id.getCodeTypeFichier())
+ .setParameter("refVersion", id.getReferentielVersion())
+ .getResultList()
+ .stream()
+ .findFirst();
+
+ return optRefInt.isPresent() ? optRefInt.get() : null;
+ }
+
+ @Override
+ public ReferentielIntegrationHistorique suitableIntegrationHistorique(String codeTypeFichier, String refVersion) {
+ Optional<ReferentielIntegrationHistorique> optRefInt = em
+ .createQuery("SELECT r FROM ReferentielIntegrationHistorique r"
+ + " WHERE r.codeTypeFichier = :codeTypeFichier AND :refVersion MEMBER OF r.dependingReferentiels")
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .setParameter("refVersion", refVersion)
+ .getResultList()
+ .stream()
+ .findFirst();
+
+ return optRefInt.isPresent() ? optRefInt.get() : null;
+ }
+
+ @Override
+ public List<ReferentielIntegrationHistorique> suitableIntegrationHistorique(String refVersion) {
+ return em
+ .createQuery("SELECT r FROM ReferentielIntegrationHistorique r"
+ + " WHERE :refVersion MEMBER OF r.dependingReferentiels")
+ .setParameter("refVersion", refVersion)
+ .getResultList();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/natureproduction/NatureProductionFichierDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/natureproduction/NatureProductionFichierDAOImpl.java
new file mode 100644
index 0000000..2c49c88
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/referentiel/natureproduction/NatureProductionFichierDAOImpl.java
@@ -0,0 +1,47 @@
+/*
+ * 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.referentiel.natureproduction;
+
+import com.megatim.fdxcommons.dao.ifaces.natureproduction.NatureProductionFichierDAO;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichierId;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class NatureProductionFichierDAOImpl implements NatureProductionFichierDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<NatureProductionFichier> getManagedEntityClass() {
+ return NatureProductionFichier.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public NatureProductionFichier getById(NatureProductionFichierId id) {
+ Query query = em.createQuery("SELECT n FROM NatureProductionFichier n WHERE n.referentiel.version = :referentielVersion"
+ + " AND n.typeFichier.code = :codeTypeFichier");
+ query.setParameter("referentielVersion", id.getReferentiel());
+ query.setParameter("codeTypeFichier", id.getTypeFichier());
+ Optional<NatureProductionFichier> optNatureProd = query.getResultList().stream().findFirst();
+
+ return optNatureProd.isPresent() ? optNatureProd.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/PlanificationDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/PlanificationDAOImpl.java
new file mode 100644
index 0000000..9e8cc98
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/PlanificationDAOImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.remoteaction.PlanificationDAO;
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class PlanificationDAOImpl extends AbstractGenericDAO<Planification, Long> implements PlanificationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<Planification> getManagedEntityClass() {
+ return Planification.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/RemoteConfigurationDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/RemoteConfigurationDAOImpl.java
new file mode 100644
index 0000000..8e0119d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/remoteaction/RemoteConfigurationDAOImpl.java
@@ -0,0 +1,33 @@
+/*
+ * 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.remoteaction;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.dao.ifaces.remoteaction.RemoteConfigurationDAO;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class RemoteConfigurationDAOImpl extends AbstractGenericDAO<RemoteConfiguration, String> implements RemoteConfigurationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<RemoteConfiguration> getManagedEntityClass() {
+ return RemoteConfiguration.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/settings/DisplayOptionsDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/settings/DisplayOptionsDAOImpl.java
new file mode 100644
index 0000000..d4ca1d8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/settings/DisplayOptionsDAOImpl.java
@@ -0,0 +1,62 @@
+package com.megatim.fdxconsultation.dao.impl.settings;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.settings.DisplayOptionsDAO;
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+import java.util.Optional;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DisplayOptionsDAOImpl extends AbstractGenericDAO<DisplayOptions, Long> implements DisplayOptionsDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<DisplayOptions> getManagedEntityClass() {
+ return DisplayOptions.class;
+ }
+
+ @Transactional
+ @Override
+ public DisplayOptions current() {
+ Optional<DisplayOptions> optional = em.createQuery("SELECT d from DisplayOptions d")
+ .getResultList()
+ .stream()
+ .findFirst();
+ return optional.orElse(null);
+ }
+
+ @Transactional
+ @Override
+ synchronized public DisplayOptions edit(DisplayOptions entity) {
+
+ DisplayOptions current = current();
+ if (current == null) {
+ return save(entity);
+ }
+
+ current.setAuditAPI(entity.getAuditAPI());
+ current.setStatParticipantAPI(entity.getStatParticipantAPI());
+ current.setStatPathAPI(entity.getStatPathAPI());
+ current.setTableauBordAPI(entity.getTableauBordAPI());
+
+ current.setSuiviEchangeStandalone(entity.getSuiviEchangeStandalone());
+ current.setTableauBordStandalone(entity.getTableauBordStandalone());
+
+ return save(current);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/CriteriaEntityPersistedDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/CriteriaEntityPersistedDAOImpl.java
new file mode 100644
index 0000000..a4d2fbe
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/CriteriaEntityPersistedDAOImpl.java
@@ -0,0 +1,84 @@
+/*
+ * 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.stats;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.tools.database.tables.dto.JpqlQueryElement;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.dao.ifaces.stats.CriteriaEntityPersistedDAO;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class CriteriaEntityPersistedDAOImpl implements CriteriaEntityPersistedDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<CriteriaEntityPersisted> getManagedEntityClass() {
+ return CriteriaEntityPersisted.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public CriteriaEntityPersisted getById(Long id) {
+ Query query = em.createQuery("SELECT c from CriteriaEntityPersisted "
+ + "where c.id = :id ");
+ query.setParameter("id", id);
+
+ Optional<CriteriaEntityPersisted> optionalCriteria = query.getResultList().stream().findFirst();
+ CriteriaEntityPersisted criterion = optionalCriteria.isPresent() ? optionalCriteria.get() : null;
+
+ if (criterion == null) {
+ return null;
+ }
+
+ return loadSubCriteria(criterion);
+ }
+
+ @Override
+ public CriteriaEntityPersisted loadSubCriteria(CriteriaEntityPersisted criterion) {
+ List<CriteriaEntityPersisted> children = getChildren(criterion.getId());
+
+ List<CriteriaEntityPersisted> subCriteria = new ArrayList<>();
+
+ for (CriteriaEntityPersisted c : children) {
+ subCriteria.add(loadSubCriteria(c));
+ }
+ criterion.setSubCriterias(subCriteria);
+
+ return criterion;
+ }
+
+ private List<CriteriaEntityPersisted> getChildren(Long id) {
+ Query query = em.createQuery("SELECT c from CriteriaEntityPersisted c where c.parent.id = :id ");
+ query.setParameter("id", id);
+
+ return (List<CriteriaEntityPersisted>) query.getResultList();
+ }
+
+ @Override
+ public List<CriteriaEntityPersisted> subCriterias(Long id) {
+ Query query = em.createQuery("SELECT c FROM CriteriaEntityPersisted c WHERE c.parent.id = :id ");
+ query.setParameter("id", id);
+ return query.getResultList();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableConfigurationDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableConfigurationDAOImpl.java
new file mode 100644
index 0000000..7bf229b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableConfigurationDAOImpl.java
@@ -0,0 +1,60 @@
+/*
+ * 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.stats;
+
+import com.megatim.fdxconsultation.dao.ifaces.stats.CriteriaEntityPersistedDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableConfigurationDAO;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import java.util.Optional;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableConfigurationDAOImpl implements TableConfigurationDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @EJB
+ CriteriaEntityPersistedDAO criteriaDao;
+
+ @Override
+ public Class<TableConfiguration> getManagedEntityClass() {
+ return TableConfiguration.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public TableConfiguration getById(Long id) {
+ Query query = em.createQuery("SELECT t FROM TableConfiguration t LEFT JOIN FETCH t.groupingColumns where t.id = :id");
+ query.setParameter("id", id);
+ Optional<TableConfiguration> optTableConfiguration = query.getResultList().stream().findFirst();
+
+ TableConfiguration tableConf = optTableConfiguration.isPresent() ? optTableConfiguration.get() : null;
+
+ if(tableConf == null) {
+ return null;
+ }
+
+ if (tableConf.getCriterion() != null) {
+ CriteriaEntityPersisted criterion = criteriaDao.loadSubCriteria(tableConf.getCriterion());
+ tableConf.setCriterion(criterion);
+
+ }
+ return tableConf;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordColumnDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordColumnDAOImpl.java
new file mode 100644
index 0000000..4098496
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordColumnDAOImpl.java
@@ -0,0 +1,45 @@
+/*
+ * 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.stats;
+
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordColumnDAO;
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import java.util.Optional;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableauBordColumnDAOImpl implements TableauBordColumnDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<TableauBordColumn> getManagedEntityClass() {
+ return TableauBordColumn.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public TableauBordColumn getById(Long id) {
+ Query query = em.createQuery("SELECT t from TableauBordColumn t "
+ + "where c.id = :id");
+ query.setParameter("id", id);
+
+ Optional<TableauBordColumn> optionalTableauBordColumn = query.getResultList().stream().findFirst();
+ return optionalTableauBordColumn.isPresent() ? optionalTableauBordColumn.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordDAOImpl.java
new file mode 100644
index 0000000..999819e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordDAOImpl.java
@@ -0,0 +1,302 @@
+package com.megatim.fdxconsultation.dao.impl.stats;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.stats.CriteriaEntityPersistedDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableConfigurationDAO;
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordDAO;
+import com.megatim.fdxconsultation.model.dto.ParticipantToFichierDto;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.persistence.Tuple;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableauBordDAOImpl implements TableauBordDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @EJB
+ TableConfigurationDAO tableConfigurationDao;
+
+ @EJB
+ CriteriaEntityPersistedDAO criteriaDao;
+
+ @Override
+ public Class<TableauBord> getManagedEntityClass() {
+ return TableauBord.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public TableauBord getById(Long id) {
+ Query query = em.createQuery("SELECT t FROM TableauBord t LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns WHERE t.id = :id");
+ query.setParameter("id", id);
+
+ TableauBord tableauBord = (TableauBord) query.getResultList().stream().findFirst().orElse(null);
+ if (tableauBord != null) {
+ loadCriteria(tableauBord);
+ }
+
+ return tableauBord;
+ }
+
+ @Override
+ public TableauBord findByUserAndTypeFichierAndReferentiel(Long userId, String codeTypeFichier, String referentielVersion) {
+ Query query = em.createQuery("SELECT t from TableauBord t LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns "
+ + "WHERE t.user.id = :userId and t.typeFichier.code = :codeTypeFichier AND t.referentiel.version = :referentielVersion")
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .setParameter("userId", userId)
+ .setParameter("referentielVersion", referentielVersion);
+
+ TableauBord tableauBord = (TableauBord) query.getResultList().stream().findFirst().orElse(null);
+ if (tableauBord != null) {
+ loadCriteria(tableauBord);
+ }
+
+ return tableauBord;
+ }
+
+ @Override
+ public List<TableauBord> findByUser(Long userId, String refVersion) {
+ Query query = em.createQuery("SELECT t FROM TableauBord t"
+ + " LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns"
+ + " WHERE t.user.id = :userId AND t.referentiel.version = :refVersion")
+ .setParameter("userId", userId)
+ .setParameter("refVersion", refVersion);
+
+ List<TableauBord> liste = query.getResultList();
+ liste.forEach(t -> loadCriteria(t));
+
+ return liste;
+ }
+
+ @Override
+ public List<ParticipantToFichierDto> tableauBordToTypeFichiers(String userName, String referentielVersion) {
+ List<Tuple> results = em.createQuery("SELECT t.participant.code, t.code AS code FROM TableauBord tb, TypeFichier t"
+ + " WHERE tb.user.userName = :userName AND tb.referentiel.version = :referentielVersion"
+ + " AND tb.typeFichier.code = t.code", Tuple.class)
+ .setParameter("userName", userName)
+ .setParameter("referentielVersion", referentielVersion)
+ .getResultList();
+
+ return results.stream().map(t -> {
+ ParticipantToFichierDto dto = new ParticipantToFichierDto(t.get(0, String.class), t.get(1, String.class));
+ return dto;
+ }).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<ParticipantToFichierDto> tableauBordToTypeFichiers(TypeConfigurationTableauBord tableauBordConfiguration, String referentielVersion) {
+ List<Tuple> results = em.createQuery("SELECT t.participant.code, t.code AS code from TableauBord tb, TypeFichier t"
+ + " WHERE tb.typeConfiguration = :tableauBordConfiguration"
+ + " AND tb.referentiel.version = :referentielVersion AND tb.typeFichier.code = t.code ", Tuple.class)
+ .setParameter("tableauBordConfiguration", tableauBordConfiguration)
+ .setParameter("referentielVersion", referentielVersion)
+ .getResultList();
+
+ return results.stream().map(t -> {
+ ParticipantToFichierDto dto = new ParticipantToFichierDto(t.get(0, String.class), t.get(1, String.class));
+ return dto;
+ }).collect(Collectors.toList());
+ }
+
+ @Override
+ public List<TableauBord> findByReferentiel(String referentielVersion) {
+ return em.createQuery("SELECT t from TableauBord t"
+ + " WHERE t.referentiel.version = :referentielVersion", TableauBord.class)
+ .setParameter("referentielVersion", referentielVersion)
+ .getResultList();
+
+ }
+
+ @Override
+ public TableauBord findByTypeConfigurationAndReferentiel(String codeTypeFichier, String referentielVersion, TypeConfigurationTableauBord typeConfiguration) {
+ Query query = em.createQuery("SELECT t from TableauBord t LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns "
+ + "WHERE t.typeConfiguration = :typeConfiguration and t.typeFichier.code = :codeTypeFichier AND t.referentiel.version = :referentielVersion")
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .setParameter("typeConfiguration", typeConfiguration)
+ .setParameter("referentielVersion", referentielVersion);
+
+ Optional<TableauBord> optionalTableauBord = query.getResultList().stream().findFirst();
+ TableauBord tableauBord = optionalTableauBord.isPresent() ? optionalTableauBord.get() : null;
+
+ if (tableauBord == null) {
+ return null;
+ }
+ loadCriteria(tableauBord);
+
+ return tableauBord;
+ }
+
+ private void loadCriteria(TableauBord tableauBord) {
+ if (tableauBord.getTableConfigurations() != null && !tableauBord.getTableConfigurations().isEmpty()) {
+ tableauBord.getTableConfigurations().stream().forEach(t -> {
+ if (t.getCriterion() != null) {
+ CriteriaEntityPersisted criterion = criteriaDao.loadSubCriteria(t.getCriterion());
+ t.setCriterion(criterion);
+ }
+ });
+ }
+ }
+
+ @Override
+ public List<TypeFichier> tableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("SELECT t.typeFichier FROM TableauBord t")
+ .append(" ")
+ .append("WHERE t.typeConfiguration = :typeConfiguration AND t.user.userName = :userName AND t.referentiel.version = :referentielVersion");
+
+ addQuerySearchPart(builder, typeFichierSearch);
+
+ Query query = em.createQuery(builder.toString());
+ query.setParameter("userName", userName);
+
+ addQuerySearchParam(query, referentielVersion, TypeConfigurationTableauBord.USER_SPECIFIC, typeFichierSearch);
+ query.setFirstResult((pageNumber - 1) * pageSize).setMaxResults(pageSize);
+
+ return query.getResultList();
+ }
+
+ @Override
+ public Long countTableauBordTypeFichiers(String userName, String referentielVersion, TypeFichierSearch typeFichierSearch) {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("SELECT COALESCE(COUNT(t.typeFichier), 0) FROM TableauBord t")
+ .append(" ")
+ .append("WHERE t.typeConfiguration = :typeConfiguration AND t.user.userName = :userName AND t.referentiel.version = :referentielVersion");
+
+ addQuerySearchPart(builder, typeFichierSearch);
+
+ Query query = em.createQuery(builder.toString());
+ query.setParameter("userName", userName);
+
+ addQuerySearchParam(query, referentielVersion, TypeConfigurationTableauBord.USER_SPECIFIC, typeFichierSearch);
+
+ return (Long) query.getSingleResult();
+ }
+
+ @Override
+ public List<TypeFichier> tableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("SELECT t.typeFichier FROM TableauBord t")
+ .append(" ")
+ .append("WHERE t.typeConfiguration = :typeConfiguration AND t.referentiel.version = :referentielVersion");
+
+ addQuerySearchPart(builder, typeFichierSearch);
+
+ Query query = em.createQuery(builder.toString());
+ addQuerySearchParam(query, referentielVersion, TypeConfigurationTableauBord.GLOBAL, typeFichierSearch);
+ query.setFirstResult((pageNumber - 1) * pageSize).setMaxResults(pageSize);
+
+ return query.getResultList();
+ }
+
+ @Override
+ public Long countTableauBordGlobalTypeFichiers(String referentielVersion, TypeFichierSearch typeFichierSearch) {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append("SELECT COALESCE(COUNT(t.typeFichier), 0) FROM TableauBord t")
+ .append(" ")
+ .append("WHERE t.typeConfiguration = :typeConfiguration AND t.referentiel.version = :referentielVersion");
+
+ addQuerySearchPart(builder, typeFichierSearch);
+
+ Query query = em.createQuery(builder.toString());
+ addQuerySearchParam(query, referentielVersion, TypeConfigurationTableauBord.GLOBAL, typeFichierSearch);
+
+ return (Long) query.getSingleResult();
+ }
+
+ private void addQuerySearchParam(Query query, String referentielVersion, TypeConfigurationTableauBord typeConfigurationTableauBord, TypeFichierSearch typeFichierSearch) {
+
+ query.setParameter("referentielVersion", referentielVersion)
+ .setParameter("typeConfiguration", typeConfigurationTableauBord);
+
+ if (typeFichierSearch.getCode() != null) {
+ query.setParameter("code", "%" + typeFichierSearch.getCode() + "%");
+ }
+
+ if (typeFichierSearch.getLibelle() != null) {
+ query.setParameter("libelle", "%" + typeFichierSearch.getLibelle() + "%");
+ }
+
+ if (typeFichierSearch.getDescription() != null) {
+ query.setParameter("description", "%" + typeFichierSearch.getDescription() + "%");
+ }
+ }
+
+ private void addQuerySearchPart(StringBuilder builder, TypeFichierSearch typeFichierSearch) {
+
+ if (typeFichierSearch.getCode() != null) {
+ builder.append(" AND ");
+ builder.append("t.typeFichier.code LIKE :code");
+ }
+
+ if (typeFichierSearch.getLibelle() != null) {
+ builder.append(" AND ");
+ builder.append("t.typeFichier.libelle LIKE :libelle");
+ }
+
+ if (typeFichierSearch.getDescription() != null) {
+ builder.append(" AND ");
+ builder.append("t.typeFichier.description LIKE :description");
+ }
+ }
+
+ @Override
+ public TableauBord findSpecificTableauBord(Long userId, String codeTypeFichier, String referentielVersion) {
+
+ Query query = em.createQuery("SELECT t from TableauBord t LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns "
+ + "WHERE t.user.id = :userId and t.typeFichier.code = :codeTypeFichier AND t.referentiel.version = :referentielVersion "
+ + "AND t.typeConfiguration = :typeConfiguration")
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .setParameter("userId", userId)
+ .setParameter("referentielVersion", referentielVersion)
+ .setParameter("typeConfiguration", TypeConfigurationTableauBord.USER_SPECIFIC);
+
+ TableauBord tableauBord = (TableauBord) query.getResultList().stream().findFirst().orElse(null);
+ if (tableauBord != null) {
+ loadCriteria(tableauBord);
+ }
+
+ return tableauBord;
+ }
+
+ @Override
+ public TableauBord findGlobalTableauBord(String codeTypeFichier, String referentielVersion) {
+
+ Query query = em.createQuery("SELECT t FROM TableauBord t LEFT JOIN FETCH t.tableConfigurations tc LEFT JOIN FETCH tc.groupingColumns "
+ + "WHERE t.typeFichier.code = :codeTypeFichier AND t.referentiel.version = :referentielVersion "
+ + "AND t.typeConfiguration = :typeConfiguration")
+ .setParameter("codeTypeFichier", codeTypeFichier)
+ .setParameter("referentielVersion", referentielVersion)
+ .setParameter("typeConfiguration", TypeConfigurationTableauBord.GLOBAL);
+
+ TableauBord tableauBord = (TableauBord) query.getResultList().stream().findFirst().orElse(null);
+ if (tableauBord != null) {
+ loadCriteria(tableauBord);
+ }
+
+ return tableauBord;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordGlobalSearchDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordGlobalSearchDAOImpl.java
new file mode 100644
index 0000000..d91ba27
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordGlobalSearchDAOImpl.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.dao.impl.stats;
+
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordGlobalSearchDAO;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableauBordGlobalSearchDAOImpl implements TableauBordGlobalSearchDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<TableauBord> getManagedEntityClass() {
+ return TableauBord.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordUserSpecificSearchDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordUserSpecificSearchDAOImpl.java
new file mode 100644
index 0000000..90a12f4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/stats/TableauBordUserSpecificSearchDAOImpl.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.dao.impl.stats;
+
+import com.megatim.fdxconsultation.dao.ifaces.stats.TableauBordUserSpecificSearchDAO;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TableauBordUserSpecificSearchDAOImpl implements TableauBordUserSpecificSearchDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<TableauBord> getManagedEntityClass() {
+ return TableauBord.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/AgentConfigurationEntityDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/AgentConfigurationEntityDAOImpl.java
new file mode 100644
index 0000000..27501b2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/AgentConfigurationEntityDAOImpl.java
@@ -0,0 +1,55 @@
+/*
+ * 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.supervision;
+
+import com.megatim.fdxconsultation.dao.ifaces.supervision.AgentConfigurationEntityDAO;
+import com.megatim.fdxconsultation.model.supervision.AgentConfigurationEntity;
+import com.megatim.fdxconsultation.model.supervision.StatutConfiguration;
+import java.util.Optional;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class AgentConfigurationEntityDAOImpl implements AgentConfigurationEntityDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<AgentConfigurationEntity> getManagedEntityClass() {
+ return AgentConfigurationEntity.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public AgentConfigurationEntity getById(Long id) {
+ Query query = em.createQuery("SELECT a from AgentConfigurationEntity a where a.id = :id");
+ query.setParameter("id", id);
+ Optional<AgentConfigurationEntity> optionalAgent = query.getResultList().stream().findFirst();
+
+ return optionalAgent.isPresent() ? optionalAgent.get() : null;
+ }
+
+ @Override
+ public int archiveAgentConfiguration(String code) {
+ Query query = em.createQuery("UPDATE AgentConfigurationEntity a set a.statutConfiguration = :statut where a.agentCode = :code");
+ query.setParameter("statut", StatutConfiguration.ARCHIVE);
+ query.setParameter("code", code);
+
+ return query.executeUpdate();
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/StandaloneServerStateEntityDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/StandaloneServerStateEntityDAOImpl.java
new file mode 100644
index 0000000..3e2212c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/StandaloneServerStateEntityDAOImpl.java
@@ -0,0 +1,57 @@
+package com.megatim.fdxconsultation.dao.impl.supervision;
+
+import com.megatim.fdxconsultation.dao.ifaces.supervision.StandaloneServerStateEntityDAO;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.fdxconsultation.model.supervision.StatutConfiguration;
+import java.util.Optional;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class StandaloneServerStateEntityDAOImpl implements StandaloneServerStateEntityDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public Class<StandaloneServerStateEntity> getManagedEntityClass() {
+ return StandaloneServerStateEntity.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public StandaloneServerStateEntity getById(Long id) {
+ Query query = em.createQuery("SELECT s from StandaloneServerStateEntity s LEFT JOIN FETCH s.agentConfigurations where s.id = :id");
+ query.setParameter("id", id);
+ Optional<StandaloneServerStateEntity> optionalServer = query.getResultList().stream().findFirst();
+
+ return optionalServer.isPresent() ? optionalServer.get() : null;
+ }
+
+ @Override
+ public void archiveServerState() {
+ Query query = em.createQuery("UPDATE StandaloneServerStateEntity s SET s.statutConfiguration = :newStatut WHERE s.statutConfiguration = :oldStatut");
+ query.setParameter("newStatut", StatutConfiguration.ARCHIVE);
+ query.setParameter("oldStatut", StatutConfiguration.EN_COURS);
+ query.executeUpdate();
+ }
+
+ @Override
+ public StandaloneServerStateEntity getCurrentStandaloneServerStateEntity() {
+ Query query = em.createQuery("SELECT s FROM StandaloneServerStateEntity s LEFT JOIN FETCH s.agentConfigurations WHERE s.statutConfiguration = :statutConfiguration");
+ query.setParameter("statutConfiguration", StatutConfiguration.EN_COURS);
+ Optional<StandaloneServerStateEntity> optionalServer = query.getResultList().stream().findFirst();
+ return optionalServer.isPresent() ? optionalServer.get() : null;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java
new file mode 100644
index 0000000..dbd8d1a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDAOImpl.java
@@ -0,0 +1,303 @@
+package com.megatim.fdxconsultation.dao.impl.supervision;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxconsultation.dao.ifaces.supervision.TransfertDAO;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TransfertDAOImpl extends AbstractGenericDAO<Transfert, Long> implements TransfertDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ EntityManager em;
+
+ @Override
+ public Class<Transfert> getManagedEntityClass() {
+ return Transfert.class;
+ }
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public List<Transfert> filter(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+
+ Query query = em.createQuery(filterQueryString(supervisionFilterModalFormRequest));
+ setParameters(query, supervisionFilterModalFormRequest);
+
+ return query
+ .setFirstResult(0)
+ .setMaxResults(200)
+ .getResultList();
+ }
+
+ @Override
+ public Long getTotalTransfert(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " etattransfert = 'TERMINE'";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsReussie(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.TERMINE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsAttente(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ATTENTE_ROUTAGE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsEchec(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(t), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHOUE "
+ + "AND t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHEC_EMPREINTE "
+ + "AND t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.ECHEC_NOMENCLATURE";
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Long getTransfertsManuel(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ return 0L;
+ }
+
+ @Override
+ public Long getTransfertsAutomatique(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ return 0L;
+ }
+
+ @Override
+ public Double getTailleTotale(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+ String queryString = "SELECT COALESCE(SUM(t.taille), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery : "");
+
+ Query query = em.createQuery(queryString);
+ return ((double) result(query, sens, dateDebut, dateFin)) / 1000;
+ }
+
+ @Override
+ public Long getNombreTypeFichier(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(COUNT(DISTINCT t.typeFichier), 0) FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery : "");
+
+ Query query = em.createQuery(queryString);
+
+ return (Long) result(query, sens, dateDebut, dateFin);
+ }
+
+ @Override
+ public Double getVitesseMoyenne(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ double tempsMisTermine = getTempsMisTermine(sens, dateDebut, dateFin);
+ double tailleTotaleTermine = getTailleTotaleTermine(sens, dateDebut, dateFin) / 1000;
+
+ return (tempsMisTermine > 0) ? (tailleTotaleTermine / tempsMisTermine) : 0;
+ }
+
+ private Double getTailleTotaleTermine(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).query();
+
+ String queryString = "SELECT COALESCE(SUM(t.taille), 0) "
+ + "FROM Transfert t " + (!whereQuery.isEmpty() ? "WHERE " + whereQuery + " AND " : " WHERE ")
+ + " t.etatTransfert = com.megatim.fdxconsultation.model.supervision.EtatTransfert.TERMINE";
+
+ Query query = em.createQuery(queryString);
+
+ return (double) result(query, sens, dateDebut, dateFin);
+ }
+
+ private Double getTempsMisTermine(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+
+ String whereNativeQuery = new TransfertDaoDynamicWhereString(sens, dateDebut, dateFin).nativeQuery();
+
+ String queryString = "SELECT COALESCE(SUM(DATE_PART('second', t.datefin - t.datedebut)), 0) AS date_diff "
+ + "FROM transfert t " + (!whereNativeQuery.isEmpty() ? "WHERE " + whereNativeQuery + " AND " : " WHERE ")
+ + " t.etattransfert = 'TERMINE'";
+
+ Query query = em.createNativeQuery(queryString);
+
+ return (double) nativeResult(query, sens, dateDebut, dateFin);
+ }
+
+ private Object result(Query query, SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ if (sens != null) {
+ setParam(query, "sens", sens);
+ }
+
+ if (dateDebut != null) {
+ setParam(query, "dateDebut", dateDebut);
+ }
+
+ if (dateFin != null) {
+ setParam(query, "dateFin", dateFin.toLocalDate().atTime(LocalTime.MAX));
+ }
+
+ return query.getSingleResult();
+ }
+
+ private Object nativeResult(Query query, SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ if (sens != null) {
+ setParam(query, "sens", sens.toString());
+ }
+
+ if (dateDebut != null) {
+ setParam(query, "dateDebut", Timestamp.valueOf(dateDebut));
+ }
+
+ if (dateFin != null) {
+ setParam(query, "dateFin", Timestamp.valueOf(dateFin.toLocalDate().atTime(LocalTime.MAX)));
+ }
+
+ return query.getSingleResult();
+ }
+
+ private void setParam(Query query, String paramName, Object paramvalue) {
+ if (paramvalue != null) {
+ query.setParameter(paramName, paramvalue);
+ }
+ }
+
+ private String filterQueryString(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+ StringBuilder queryString = new StringBuilder("SELECT t FROM Transfert t");
+
+ boolean hasCondition = false;
+
+ if (supervisionFilterModalFormRequest.getNomFichier() != null) {
+ queryString.append(" WHERE t.nomFichier LIKE :nomFichier");
+ hasCondition = true;
+ }
+
+ if (supervisionFilterModalFormRequest.getTypeFichier() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.typeFichier = :typeFichier");
+ }
+
+ if (supervisionFilterModalFormRequest.getSensTransfert() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.sensTransfert = :sensTransfert");
+ }
+
+ if (supervisionFilterModalFormRequest.getEtatTransfert() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.etatTransfert = :etatTransfert");
+ }
+
+ if (supervisionFilterModalFormRequest.getDateDebut() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+ hasCondition = true;
+
+ queryString.append("t.dateCreation >= :dateDebut");
+ }
+
+ if (supervisionFilterModalFormRequest.getDateFin() != null) {
+ if (!hasCondition) {
+ queryString.append(" WHERE ");
+ } else {
+ queryString.append(" AND ");
+ }
+
+ queryString.append("t.dateDebut <= :dateFin");
+ }
+
+ return queryString.toString();
+ }
+
+ private void setParameters(Query query, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+
+ if (supervisionFilterModalFormRequest.getNomFichier() != null) {
+ setParam(query, "nomFichier", "%" + supervisionFilterModalFormRequest.getNomFichier() + "%");
+ }
+
+ if (supervisionFilterModalFormRequest.getTypeFichier() != null) {
+ setParam(query, "typeFichier", supervisionFilterModalFormRequest.getTypeFichier().getCode());
+ }
+
+ if (supervisionFilterModalFormRequest.getSensTransfert() != null) {
+ setParam(query, "sensTransfert", supervisionFilterModalFormRequest.getSensTransfert());
+ }
+
+ if (supervisionFilterModalFormRequest.getEtatTransfert() != null) {
+ setParam(query, "etatTransfert", supervisionFilterModalFormRequest.getEtatTransfert());
+ }
+
+ if (supervisionFilterModalFormRequest.getDateDebut() != null) {
+ setParam(query, "dateDebut", supervisionFilterModalFormRequest.getDateDebut().toLocalDate().atStartOfDay());
+ }
+
+ if (supervisionFilterModalFormRequest.getDateFin() != null) {
+ setParam(query, "dateFin", supervisionFilterModalFormRequest.getDateFin().toLocalDate().atTime(LocalTime.MAX));
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDaoDynamicWhereString.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDaoDynamicWhereString.java
new file mode 100644
index 0000000..48f99b9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertDaoDynamicWhereString.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxconsultation.dao.impl.supervision;
+
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TransfertDaoDynamicWhereString {
+
+ private final SensTransfert sens;
+ private final LocalDateTime dateDebut;
+ private final LocalDateTime dateFin;
+
+ public TransfertDaoDynamicWhereString(SensTransfert sens, LocalDateTime dateDebut, LocalDateTime dateFin) {
+ this.sens = sens;
+ this.dateDebut = dateDebut;
+ this.dateFin = dateFin;
+ }
+
+ public String query() {
+ StringBuilder stringBuilder = new StringBuilder("");
+ boolean hasCriteria = false;
+
+ if (sens != null) {
+ stringBuilder.append(" t.sensTransfert = :sens ");
+ hasCriteria = true;
+ }
+
+ if (dateDebut != null) {
+ if (hasCriteria) {
+ stringBuilder.append(" AND ");
+ }
+ stringBuilder.append(" t.dateDebut >= :dateDebut ");
+ hasCriteria = true;
+ }
+
+ if (dateFin != null) {
+ if (hasCriteria) {
+ stringBuilder.append(" AND ");
+ }
+ stringBuilder.append(" t.dateFin <= :dateFin ");
+ }
+
+ return stringBuilder.toString();
+ }
+
+ public String nativeQuery() {
+ StringBuilder stringBuilder = new StringBuilder("");
+ boolean hasCriteria = false;
+
+ if (sens != null) {
+ stringBuilder.append(" t.senstransfert = :sens ");
+ hasCriteria = true;
+ }
+
+ if (dateDebut != null) {
+ if (hasCriteria) {
+ stringBuilder.append(" AND ");
+ }
+ stringBuilder.append(" t.datedebut >= :dateDebut ");
+ hasCriteria = true;
+ }
+
+ if (dateFin != null) {
+ if (hasCriteria) {
+ stringBuilder.append(" AND ");
+ }
+ stringBuilder.append(" t.datefin <= :dateFin ");
+ }
+
+ return stringBuilder.toString();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertMessageKey.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertMessageKey.java
new file mode 100644
index 0000000..594c132
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/supervision/TransfertMessageKey.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.dao.impl.supervision;
+
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TransfertMessageKey {
+
+ private final Transfert transfert;
+
+ public TransfertMessageKey(Transfert transfert) {
+ this.transfert = transfert;
+ }
+
+ public String key() {
+ String k = codeAgent() + "-" + transfert.getNomFichier() + "-" + transfert.getSensTransfert();
+ return k;
+ }
+
+ private String codeAgent() {
+ return transfert.getSensTransfert().equals(SensTransfert.ENVOI)
+ ? transfert.getCodeAgentRecepteur()
+ : transfert.getCodeAgent();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/utils/BaseEntityUtil.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/utils/BaseEntityUtil.java
new file mode 100644
index 0000000..42b6dc4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/impl/utils/BaseEntityUtil.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.dao.impl.utils;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.util.Date;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BaseEntityUtil {
+
+ private BaseEntityUtil() {
+ }
+
+ public static void setBaseEntityFieldsForAdd(BaseEntity baseEntity, User connectedUser) {
+ baseEntity.setDateCreation(new Date());
+ baseEntity.setTypeOperation(TypeOperation.AJOUTER);
+ baseEntity.setUtilisateurCreation(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+
+ public static void setBaseEntityFieldsForUpdate(BaseEntity baseEntity, User connectedUser) {
+ baseEntity.setDateDerniereModification(new Date());
+ baseEntity.setUtilisateurModification(connectedUser != null ? connectedUser.getUserName() : null);
+ }
+
+ public static void setBaseEntityFieldsForDelete(BaseEntity baseEntity, User connectedUser) {
+ baseEntity.setDateSuppression(new Date());
+ baseEntity.setUtilisateurSuppression(connectedUser != null ? connectedUser.getUserName() : null);
+ baseEntity.setTypeOperation(TypeOperation.SUPPRIMER);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/TypeFichierReferentielSearchDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/TypeFichierReferentielSearchDAOImpl.java
new file mode 100644
index 0000000..42074dd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/TypeFichierReferentielSearchDAOImpl.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxconsultation.dao.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.TypeFichierReferentielSearchDAO;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import java.util.List;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author ASUS
+ */
+@Stateless
+public class TypeFichierReferentielSearchDAOImpl implements TypeFichierReferentielSearchDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public List<TypeFichier> all(int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity) {
+
+ String queryString = "SELECT t FROM TypeFichier t " + whereQueryString(searchEntity);
+
+ Query query = queryWithParameter(em.createQuery(queryString), searchEntity)
+ .setFirstResult((pageNumber - 1) * pagesize)
+ .setMaxResults(pagesize);
+
+ return query.getResultList();
+ }
+
+ @Override
+ public Long count(TypeFichierReferentielSearch searchEntity) {
+ String queryString = "SELECT COUNT(t) FROM TypeFichier t " + whereQueryString(searchEntity);
+ Query query = queryWithParameter(em.createQuery(queryString), searchEntity);
+
+ return (Long) query.getSingleResult();
+ }
+
+ @Override
+ public List<TypeFichier> all(String userName, int pageNumber, int pagesize, TypeFichierReferentielSearch searchEntity) {
+
+ String queryString = "SELECT t from TypeFichier t WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0) AND " + queryString(searchEntity);
+
+ Query query = queryWithParameter(em.createQuery(queryString), searchEntity)
+ .setFirstResult((pageNumber - 1) * pagesize)
+ .setMaxResults(pagesize)
+ .setParameter("username", userName);
+
+ return query.getResultList();
+
+ }
+
+ @Override
+ public Long count(String userName, TypeFichierReferentielSearch searchEntity) {
+ String queryString
+ = "SELECT COALESCE(COUNT(t), 0) FROM TypeFichier t WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0) AND " + queryString(searchEntity);
+ Query query = queryWithParameter(em.createQuery(queryString), searchEntity).setParameter("username", userName);
+
+ return (Long) query.getSingleResult();
+ }
+
+ private Query queryWithParameter(Query query, TypeFichierReferentielSearch searchEntity) {
+
+ if (searchEntity.getCode() != null) {
+ query.setParameter("code", likeValue(searchEntity.getCode()));
+ }
+
+ if (searchEntity.getLibelle() != null) {
+ query.setParameter("libelle", likeValue(searchEntity.getLibelle()));
+ }
+
+ if (searchEntity.getDescription() != null) {
+ query.setParameter("description", likeValue(searchEntity.getDescription()));
+ }
+
+ if (searchEntity.getReferentiel() != null) {
+ query.setParameter("version", searchEntity.getReferentiel());
+ }
+
+ return query;
+ }
+
+ private String whereQueryString(TypeFichierReferentielSearch searchEntity) {
+ return " WHERE " + queryString(searchEntity);
+ }
+
+ private String queryString(TypeFichierReferentielSearch searchEntity) {
+
+ StringBuilder query = new StringBuilder("");
+ boolean withAnd = false;
+
+ if (searchEntity.getCode() != null) {
+ query.append("t.code LIKE :code");
+ withAnd = true;
+ }
+
+ if (searchEntity.getLibelle() != null) {
+ if (withAnd) {
+ query.append(" AND ");
+ }
+ query.append(" t.libelle LIKE :libelle");
+ withAnd = true;
+ }
+
+ if (searchEntity.getDescription() != null) {
+ if (withAnd) {
+ query.append(" AND ");
+ }
+ query.append(" t.description LIKE :description");
+ withAnd = true;
+ }
+
+ if (searchEntity.getReferentiel() != null) {
+ if (withAnd) {
+ query.append(" AND ");
+ }
+ query.append(" t.referentiel.version <= :version");
+ }
+
+ return query.toString();
+ }
+
+ private String likeValue(String value) {
+ return "%" + value + "%";
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserParticipantDAOIml.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserParticipantDAOIml.java
new file mode 100644
index 0000000..c5a8e16
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserParticipantDAOIml.java
@@ -0,0 +1,81 @@
+package com.megatim.fdxconsultation.dao.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.UserParticipantDAO;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class UserParticipantDAOIml implements UserParticipantDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public List<Participant> findUserParticipantsWithPagination(String userName, ParticipantSearch participantSearch, int pageNumber, int pageSize) {
+ StringBuilder queryString = new StringBuilder("SELECT t from Participant t ")
+ .append(" WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.participants tf WHERE u.userName = :username AND tf = t) > 0)");
+ extendsQuery(queryString, participantSearch);
+ Query query = em.createQuery(queryString.toString()).setParameter("username", userName);
+ extendsParameter(query, participantSearch);
+ query.setFirstResult((pageNumber - 1) * pageSize).setMaxResults(pageSize);
+ return (List<Participant>) query.getResultList();
+ }
+
+ @Override
+ public List<Participant> findAllUserParticipants(String userName, ParticipantSearch participantSearch) {
+ StringBuilder queryString = new StringBuilder("SELECT t from Participant t ")
+ .append(" WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.participants tf WHERE u.userName = :username AND tf = t) > 0)");
+ extendsQuery(queryString, participantSearch);
+ Query query = em.createQuery(queryString.toString()).setParameter("username", userName);
+ extendsParameter(query, participantSearch);
+ return (List<Participant>) query.getResultList();
+ }
+
+ @Override
+ public List<Participant> findUserParticipants(String userName) {
+ return (List<Participant>) em.createQuery("SELECT t from Participant t "
+ + " WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.participants tf WHERE u.userName = :username AND tf = t) > 0)")
+ .setParameter("username", userName)
+ .getResultList();
+ }
+
+ @Override
+ public Long countUserParticipants(String userName, ParticipantSearch participantSearch) {
+ StringBuilder queryString = new StringBuilder("SELECT t from Participant t ")
+ .append(" WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.participants tf WHERE u.userName = :username AND tf = t) > 0)");
+ extendsQuery(queryString, participantSearch);
+ Query query = em.createQuery(queryString.toString()).setParameter("username", userName);
+ extendsParameter(query, participantSearch);
+ return (long) query.getResultList().size();
+ }
+
+ private void extendsQuery(StringBuilder queryString, ParticipantSearch participantSearch) {
+ if (participantSearch.getCode() != null) {
+ queryString.append(" AND t.code LIKE :code");
+ }
+ if (participantSearch.getLibelle() != null) {
+ queryString.append(" AND t.libelle LIKE :libelle");
+ }
+ }
+
+ private void extendsParameter(Query query, ParticipantSearch participantSearch) {
+ if (participantSearch.getCode() != null) {
+ //System.out.println("typeFichierSearch.getCode() " + "%" + typeFichierSearch.getCode() + "%");
+ query.setParameter("code", "%" + participantSearch.getCode() + "%");
+ }
+ if (participantSearch.getLibelle() != null) {
+ //System.out.println("typeFichierSearch.getCode() " + "%" + typeFichierSearch.getCode() + "%");
+ query.setParameter("libelle", "%" + participantSearch.getLibelle() + "%");
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserTypeFichierDAOIml.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserTypeFichierDAOIml.java
new file mode 100644
index 0000000..a7ff595
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/dao/searchs/UserTypeFichierDAOIml.java
@@ -0,0 +1,134 @@
+package com.megatim.fdxconsultation.dao.searchs;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.dao.ifaces.searchs.UserTypeFichierDAO;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class UserTypeFichierDAOIml implements UserTypeFichierDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiersWithPagination(String userName, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+
+ StringBuilder queryString = new StringBuilder("SELECT t from TypeFichier t ")
+ .append(" WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0)");
+
+ extendsQuery(queryString, typeFichierSearch);
+
+ Query query = em.createQuery(queryString.toString())
+ .setParameter("username", userName);
+
+ extendsParameter(query, typeFichierSearch);
+
+ query.setFirstResult((pageNumber - 1) * pageSize).setMaxResults(pageSize);
+
+ return (List<TypeFichier>) query.getResultList();
+ }
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiers(String userName) {
+ return (List<TypeFichier>) em.createQuery("SELECT t from TypeFichier t "
+ + " WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0)")
+ .setParameter("username", userName)
+ .getResultList();
+ }
+
+ @Override
+ public Long countUserTypeFichiers(String userName, TypeFichierSearch typeFichierSearch) {
+
+ StringBuilder queryString = new StringBuilder("SELECT COALESCE(COUNT(t), 0) from TypeFichier t ")
+ .append(" WHERE ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0)");
+
+ extendsQuery(queryString, typeFichierSearch);
+
+ Query query = em.createQuery(queryString.toString())
+ .setParameter("username", userName);
+
+ extendsParameter(query, typeFichierSearch);
+
+ return (long) query.getResultList().size();
+ }
+
+ @Override
+ public List<TypeFichier> findUserTypeFichiersInReferentielWithPagination(String userName, String referentiel, TypeFichierSearch typeFichierSearch, int pageNumber, int pageSize) {
+
+ StringBuilder queryString = new StringBuilder("SELECT t from TypeFichier t ")
+ .append(" WHERE t.referentiel.version <= :referentiel AND ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0)");
+
+ extendsQuery(queryString, typeFichierSearch);
+
+ Query query = em.createQuery(queryString.toString())
+ .setParameter("username", userName)
+ .setParameter("referentiel", referentiel);
+
+ extendsParameter(query, typeFichierSearch);
+
+ query.setFirstResult((pageNumber - 1) * pageSize).setMaxResults(pageSize);
+
+ return (List<TypeFichier>) query.getResultList();
+ }
+
+ @Override
+ public Long countUserTypeFichiersInReferentiel(String userName, String referentiel, TypeFichierSearch typeFichierSearch) {
+ StringBuilder queryString = new StringBuilder("SELECT COALESCE(COUNT(t), 0) from TypeFichier t ")
+ .append(" WHERE t.referentiel.version <= :referentiel AND ((SELECT COALESCE(COUNT(u), 0) FROM User u JOIN u.typeFichiers tf WHERE u.userName = :username AND tf = t) > 0)");
+
+ extendsQuery(queryString, typeFichierSearch);
+
+ Query query = em.createQuery(queryString.toString())
+ .setParameter("username", userName)
+ .setParameter("referentiel", referentiel);
+
+ extendsParameter(query, typeFichierSearch);
+
+ return (long) query.getSingleResult();
+ }
+
+ private void extendsQuery(StringBuilder queryString, TypeFichierSearch typeFichierSearch) {
+
+ if (typeFichierSearch.getCode() != null) {
+ queryString.append(" AND t.code LIKE :code");
+ }
+
+ if (typeFichierSearch.getLibelle() != null) {
+ queryString.append(" AND t.libelle LIKE :libelle");
+ }
+
+ if (typeFichierSearch.getDescription() != null) {
+ queryString.append(" AND t.description LIKE :description");
+ }
+
+ }
+
+ private void extendsParameter(Query query, TypeFichierSearch typeFichierSearch) {
+
+ if (typeFichierSearch.getCode() != null) {
+ //System.out.println("typeFichierSearch.getCode() " + "%" + typeFichierSearch.getCode() + "%");
+ query.setParameter("code", "%" + typeFichierSearch.getCode() + "%");
+ }
+
+ if (typeFichierSearch.getLibelle() != null) {
+ //System.out.println("typeFichierSearch.getLibelle() " + "%" + typeFichierSearch.getLibelle() + "%");
+ query.setParameter("libelle", "%" + typeFichierSearch.getLibelle() + "%");
+ }
+
+ if (typeFichierSearch.getDescription() != null) {
+ //System.out.println("typeFichierSearch.getDescription() " + "%" + typeFichierSearch.getDescription() + "%");
+ query.setParameter("description", "%" + typeFichierSearch.getDescription() + "%");
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/CategoryDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/CategoryDAOImpl.java
new file mode 100644
index 0000000..9d32025
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/CategoryDAOImpl.java
@@ -0,0 +1,67 @@
+package com.megatim.fdxconsultation.daoimpl.documents;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.documents.CategoryDAO;
+import com.megatim.fdxconsultation.dao.ifaces.documents.DocumentDAO;
+import com.megatim.fdxconsultation.model.documents.Category;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class CategoryDAOImpl extends AbstractGenericDAO<Category, Long> implements CategoryDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Inject
+ private DocumentDAO documentDAO;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Category> getManagedEntityClass() {
+ return Category.class;
+ }
+
+ @Override
+ public Category getById(Long id) {
+ Query query = getEntityManager().createQuery("SELECT c FROM Category c WHERE c.id = :id AND c.typeOperation = :typeOperation");
+ query.setParameter("id", id).setParameter("typeOperation", TypeOperation.AJOUTER);
+ List<Category> liste = query.getResultList();
+ return liste != null ? liste.stream().findFirst().get() : null;
+ }
+
+ @Override
+ @Transactional
+ public List<Category> loadAll() {
+
+ /*Query query = getEntityManager().createNativeQuery("SELECT c.*, doc.* FROM category c "
+ + "LEFT JOIN fdx_document doc ON c.id = doc.category_id AND doc.type_operation = :typeOperation "
+ + "WHERE c.type_operation = :typeOperation");*/
+
+ Query query = getEntityManager().createQuery("SELECT DISTINCT c FROM Category c "
+ + "WHERE c.typeOperation = :typeOperation");
+
+ query.setParameter("typeOperation", TypeOperation.AJOUTER);
+
+ List<Category> categories = query.getResultList();
+ categories.forEach(c -> c.setDocuments(documentDAO.getByCategory(c.getId()).stream().collect(Collectors.toSet())));
+
+ return categories;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/DocumentDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/DocumentDAOImpl.java
new file mode 100644
index 0000000..1442872
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/documents/DocumentDAOImpl.java
@@ -0,0 +1,48 @@
+package com.megatim.fdxconsultation.daoimpl.documents;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.documents.DocumentDAO;
+import com.megatim.fdxconsultation.model.documents.Document;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class DocumentDAOImpl extends AbstractGenericDAO<Document, Long> implements DocumentDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<Document> getManagedEntityClass() {
+ return Document.class;
+ }
+
+ @Override
+ public Document getById(Long id) {
+ Query query = getEntityManager().createQuery("SELECT d FROM Document d WHERE d.id = :id AND d.typeOperation = :typeOperation");
+ query.setParameter("id", id).setParameter("typeOperation", TypeOperation.AJOUTER);
+ List<Document> liste = query.getResultList();
+ return liste != null ? liste.stream().findFirst().get() : null;
+ }
+
+ @Override
+ public List<Document> getByCategory(Long categoryId) {
+ Query query = getEntityManager().createQuery("SELECT d FROM Document d WHERE d.category.id = :id AND d.typeOperation = :typeOperation");
+ query.setParameter("id", categoryId).setParameter("typeOperation", TypeOperation.AJOUTER);
+ return query.getResultList();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/favoritessearch/FavoriteSearchDAOImpl.java b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/favoritessearch/FavoriteSearchDAOImpl.java
new file mode 100644
index 0000000..79e20b4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/java/com/megatim/fdxconsultation/daoimpl/favoritessearch/FavoriteSearchDAOImpl.java
@@ -0,0 +1,39 @@
+package com.megatim.fdxconsultation.daoimpl.favoritessearch;
+
+import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.dao.ifaces.favoritessearch.FavoriteSearchDAO;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Dependent
+public class FavoriteSearchDAOImpl extends AbstractGenericDAO<FavoriteSearch, Long> implements FavoriteSearchDAO {
+
+ @PersistenceContext(unitName = "fdxConsultationPersistenceUnit")
+ protected EntityManager em;
+
+ @Override
+ public EntityManager getEntityManager() {
+ return em;
+ }
+
+ @Override
+ public Class<FavoriteSearch> getManagedEntityClass() {
+ return FavoriteSearch.class;
+ }
+
+ @Override
+ public List<FavoriteSearch> all(String userName) {
+ Query query = getEntityManager().createQuery("SELECT f FROM FavoriteSearch f WHERE f.utilisateurCreation = :userName AND f.typeOperation = :typeOperation");
+ query.setParameter("userName", userName).setParameter("typeOperation", TypeOperation.AJOUTER);
+ return query.getResultList();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-dao-impl/src/main/resources/META-INF/persistence.xml b/fdx-consultation/fdxconsultation-dao-impl/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..f61df74
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-dao-impl/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+ <persistence-unit name="fdxConsultationPersistenceUnit" transaction-type="JTA">
+
+ <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+ <jta-data-source>java:/fdxConsultationDS</jta-data-source>
+ <shared-cache-mode>NONE</shared-cache-mode>
+
+ <!--Module Administration-->
+ <class>com.megatim.fdxconsultation.model.administration.Action</class>
+ <class>com.megatim.fdxconsultation.model.administration.Role</class>
+ <class>com.megatim.fdxconsultation.model.administration.User</class>
+ <class>com.megatim.fdxconsultation.model.administration.HistoriqueMotDePasse</class>
+ <class>com.megatim.fdxconsultation.model.message.systeme.MessageSysteme</class>
+ <class>com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur</class>
+ <class>com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur</class>
+
+ <!--Module Configuration-->
+ <class>com.megatim.fdxconsultation.model.configuration.CodeStatutHttp</class>
+
+ <!--Module Referentiel-->
+ <class>com.megatim.fdxcommons.model.referentiel.ApplicationSource</class>
+ <class>com.megatim.fdxcommons.model.referentiel.ExtensionFichier</class>
+ <class>com.megatim.fdxcommons.model.referentiel.GroupeNoeud</class>
+ <class>com.megatim.fdxcommons.model.referentiel.GroupeParticipant</class>
+ <class>com.megatim.fdxcommons.model.referentiel.Noeud</class>
+ <class>com.megatim.fdxcommons.model.referentiel.Participant</class>
+ <class>com.megatim.fdxcommons.model.referentiel.Pays</class>
+ <class>com.megatim.fdxcommons.model.referentiel.Referentiel</class>
+ <class>com.megatim.fdxcommons.model.referentiel.Routage</class>
+ <class>com.megatim.fdxcommons.model.referentiel.StructureLigne</class>
+ <class>com.megatim.fdxcommons.model.referentiel.TypeFichier</class>
+ <class>com.megatim.fdxcommons.model.referentiel.ValidateurFichier</class>
+ <class>com.megatim.fdxcommons.model.referentiel.ValidateurFichierConfiguration</class>
+ <class>com.megatim.fdxcommons.model.integration.ColumnDefinition</class>
+ <class>com.megatim.fdxconsultation.model.integration.EchecIntegration</class>
+ <class>com.megatim.fdxcommons.model.integration.TableDefinition</class>
+ <class>com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete</class>
+
+ <!-- Historique des intégration du referentiel-->
+ <class>com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique</class>
+
+ <!-- Module d'administration de l'API depuis l'interface de consultation -->
+ <class>com.megatim.fdxconsultation.model.api.token.ApiToken</class>
+
+ <!-- Module de supervision de l'API -->
+ <class>com.megatim.fdxconsultation.model.supervision.Transfert</class>
+
+ <class>com.megatim.fdxcommons.model.integration.ColumnDefinition</class>
+
+ <class>com.megatim.fdxconsultation.model.stats.TableConfiguration</class>
+ <class>com.megatim.fdxconsultation.model.stats.TableauBord</class>
+ <class>com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted</class>
+ <class>com.megatim.fdxconsultation.model.stats.TableauBordColumn</class>
+ <class>com.megatim.fdxconsultation.model.stats.FonctionAggregationCriterion</class>
+
+ <class>com.megatim.fdxconsultation.model.dataproduction.DataProduction</class>
+
+ <class>com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier</class>
+
+ <!-- Supervision-->
+ <class>com.megatim.fdxconsultation.model.supervision.AgentConfigurationEntity</class>
+ <class>com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity</class>
+
+ <!-- Settings -->
+ <class>com.megatim.fdxconsultation.model.settings.DisplayOptions</class>
+
+ <!-- LOG -->
+ <class>com.megatim.fdxcommons.model.log.UserActionLog</class>
+ <class>com.megatim.fdxconsultation.model.log.ApiUserActionLog</class>
+
+ <!-- Document -->
+ <class>com.megatim.fdxconsultation.model.documents.Category</class>
+ <class>com.megatim.fdxconsultation.model.documents.Document</class>
+
+ <!-- Favoris -->
+ <class>com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch</class>
+
+ <!-- File Item -->
+ <class>com.megatim.file.model.entites.ItemFile</class>
+
+ <!-- Gestion des appels sur les systèmes des participants-->
+ <class>com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration</class>
+ <class>com.megatim.fdxconsultation.model.remoteaction.Planification</class>
+
+ <class>com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData</class>
+
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
+ <property name="hibernate.hbm2ddl.auto" value="update"/>
+ <property name="hibernate.show_sql" value="false"/>
+ </properties>
+
+ </persistence-unit>
+
+ <persistence-unit name="mgtchatmodule" transaction-type="JTA">
+ <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+ <jta-data-source>java:/fdxConsultationDS</jta-data-source>
+ <shared-cache-mode>NONE</shared-cache-mode>
+ <class>com.megatim.chat.model.entites.Message</class>
+ <class>com.megatim.chat.model.entites.FileAttente</class>
+ <class>com.megatim.chat.model.entites.UserConversation</class>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
+ <property name="hibernate.hbm2ddl.auto" value="update" />
+ <property name="hibernate.show_sql" value="false" />
+ </properties>
+ </persistence-unit>
+
+ <persistence-unit name="mgtfilemodule" transaction-type="JTA">
+ <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+ <jta-data-source>java:/fdxConsultationDS</jta-data-source>
+ <shared-cache-mode>NONE</shared-cache-mode>
+ <class>com.megatim.file.model.entites.ItemFile</class>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/>
+ <property name="hibernate.hbm2ddl.auto" value="update"/>
+ <property name="hibernate.show_sql" value="false"/>
+ </properties>
+ </persistence-unit>
+
+</persistence>
diff --git a/fdx-consultation/fdxconsultation-model/.gitignore b/fdx-consultation/fdxconsultation-model/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-model/nb-configuration.xml b/fdx-consultation/fdxconsultation-model/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-model/pom.xml b/fdx-consultation/fdxconsultation-model/pom.xml
new file mode 100644
index 0000000..c2edf65
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/pom.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.model</groupId>
+ <artifactId>fdxconsultation-model</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <jakartaee>8.0</jakartaee>
+ <version.lombok>1.18.18</version.lombok>
+ <version.mapstruct>1.4.2.Final</version.mapstruct>
+ <version.mapstruct-lombok>0.2.0</version.mapstruct-lombok>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.file</groupId>
+ <artifactId>application-file-service-impl-dependency</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ <optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct</artifactId>
+ <version>${version.mapstruct}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.hibernate.validator</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>6.0.13.Final</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdx.messaging</groupId>
+ <artifactId>fdx-messaging-common</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.model</groupId>
+ <artifactId>fdxcommons-model</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <!-- ... -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ </path>
+ <path>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct-processor</artifactId>
+ <version>${version.mapstruct}</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <name>fdxconsultation-model</name>
+
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/adapters/LocalDateTimeAdapter.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/adapters/LocalDateTimeAdapter.java
new file mode 100644
index 0000000..eaabe62
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/adapters/LocalDateTimeAdapter.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.model.adapters;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
+
+ private static final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
+
+ @Override
+ public LocalDateTime unmarshal(String value) throws Exception {
+ return LocalDateTime.parse(value, formatter);
+ }
+
+ @Override
+ public String marshal(LocalDateTime value) throws Exception {
+ return value.toString();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Action.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Action.java
new file mode 100644
index 0000000..b8eccf0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Action.java
@@ -0,0 +1,220 @@
+/*
+ * 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.model.administration;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ *
+ * @author Leonel FOFOU
+ */
+@Entity(name = "Action")
+@Table(name = "FS_ACTION")
+public class Action implements Comparable<Action>, Serializable {
+
+ @SequenceGenerator(name = "SEQ_ACTION",
+ sequenceName = "SEQ_ACTION",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ACTION")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "path")
+ private String path;
+
+ @Column(name = "module")
+ private String module;
+
+ @Column(name = "name")
+ private String name;
+
+ @Column(name = "categorie")
+ private String categorie;
+
+ @Column(name = "description")
+ private String description;
+
+ @Column(name = "autorise")
+ private Boolean autorise;
+
+ @Column(name = "ID_GENERER")
+ protected String idGenerer;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @ManyToMany(mappedBy = "actions")
+ private List<Role> roles = new ArrayList<Role>();
+
+ public Action() {
+ }
+
+ public Action(String name, String description, String path, String module, Boolean autorise) {
+ this.name = name;
+ this.description = description;
+ this.path = path;
+ this.module = module;
+ this.autorise = autorise;
+ }
+
+ public Action(String name, String description, String path, String module, String categorie, Boolean autorise) {
+ this.name = name;
+ this.description = description;
+ this.path = path;
+ this.module = module;
+ this.categorie = categorie;
+ this.autorise = autorise;
+ }
+
+ public Action(String name, String description, String path, String module, Boolean autorise, Role role) {
+ this.name = name;
+ this.description = description;
+ this.path = path;
+ this.module = module;
+ this.autorise = autorise;
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List<Role> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<Role> roles) {
+ this.roles = roles;
+ }
+
+ public String getIdGenerer() {
+ return idGenerer;
+ }
+
+ public void setIdGenerer(String idGenerer) {
+ this.idGenerer = idGenerer;
+ }
+
+ public TypeOperation getTypeOperation() {
+ return typeOperation;
+ }
+
+ public void setTypeOperation(TypeOperation typeOperation) {
+ this.typeOperation = typeOperation;
+ }
+
+ public Boolean getAutorise() {
+ return autorise;
+ }
+
+ public void setAutorise(Boolean autorise) {
+ this.autorise = autorise;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getCategorie() {
+ return categorie;
+ }
+
+ public void setCategorie(String categorie) {
+ this.categorie = categorie;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 79 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Action other = (Action) obj;
+ return Objects.equals(this.id, other.id);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(Action parameter) {
+
+ // Si le parametre est null
+ if (parameter == null) {
+ return -1;
+ }
+
+ // Si le code du parametre est vide
+ if (parameter.id == null) {
+ return -1;
+ }
+
+ // Si le code du parametre en cours est vide
+ if (id == null) {
+ return 1;
+ }
+
+ // On retourne la comparaison des codes
+ return id.compareTo(parameter.id);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/HistoriqueMotDePasse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/HistoriqueMotDePasse.java
new file mode 100644
index 0000000..c0c7381
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/HistoriqueMotDePasse.java
@@ -0,0 +1,139 @@
+package com.megatim.fdxconsultation.model.administration;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "HistoriqueMotDePasse")
+@Table(name = "FDX_HIST_PWD")
+public class HistoriqueMotDePasse implements Comparable<HistoriqueMotDePasse>, Serializable {
+
+ @SequenceGenerator(name = "SEQ_HIST_PWD",
+ sequenceName = "SEQ_HIST_PWD",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_HIST_PWD")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "ID_GENERER")
+ protected String idGenerer;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @ManyToOne
+ @JoinColumn(name = "USER_ID")
+ private User user;
+
+ @Column(name = "PWD")
+ private String motDePasse;
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ private String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ private String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ private String utilisateurSuppression;
+
+ public HistoriqueMotDePasse() {}
+
+ public HistoriqueMotDePasse(String motDePasse, User user) {
+ this.motDePasse = motDePasse;
+ this.user = user;
+ }
+
+ @Override
+ public boolean equals(Object parameter) {
+
+ // Si le parametre est null
+ if (parameter == null) {
+ return false;
+ }
+
+ // Si le parametre n'est pas de l'instance
+ if (!(parameter instanceof HistoriqueMotDePasse)) {
+ return false;
+ }
+
+ // On caste
+ HistoriqueMotDePasse casted = (HistoriqueMotDePasse) parameter;
+
+ // Si l'id du parametre est vide
+ if (casted.id == null) {
+ return false;
+ }
+
+ // Si l'id en cours est vide
+ if (id == null) {
+ return false;
+ }
+
+ // On retourne la comparaison des ids
+ return id.equals(casted.id);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(HistoriqueMotDePasse parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+
+ // Si le code du parametre est vide
+ if (parameter.id == null) {
+ return -1;
+ }
+
+ // Si l'id du parametre en cours est vide
+ if (id == null) {
+ return 1;
+ }
+
+ // On retourne la comparaison des codes
+ return id.compareTo(parameter.getId());
+ }
+
+ @Override
+ public String toString() {
+ return "HistoriqueMotDePasse{" + "id=" + id + ", idGenerer=" + idGenerer + ", typeOperation=" + typeOperation + ", user=" + user + ", motDePasse=" + motDePasse + ", dateCreation=" + dateCreation + ", utilisateurCreation=" + utilisateurCreation + ", dateDerniereModification=" + dateDerniereModification + ", utilisateurModification=" + utilisateurModification + ", dateSuppression=" + dateSuppression + ", utilisateurSuppression=" + utilisateurSuppression + '}';
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalActionUtilisateur.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalActionUtilisateur.java
new file mode 100644
index 0000000..d45a064
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalActionUtilisateur.java
@@ -0,0 +1,111 @@
+package com.megatim.fdxconsultation.model.administration;
+
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "JournalActionUtilisateur")
+@Table(name = "useractionlog")
+public class JournalActionUtilisateur implements Comparable<JournalActionUtilisateur>, Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_USER_ACTION_LOGS",
+ sequenceName = "SEQ_USER_ACTION_LOGS",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_USER_ACTION_LOGS")
+ private Long id;
+
+ @NotEmpty(message = "La description est obligatoire")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ private String message;
+
+ @CriteriaEntitySearch(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ //@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @NotNull(message = "La date de l'action est obligatoire")
+ @CriteriaEntitySearch(libelle = "Date", rang = 1)
+ private LocalDateTime dateAction;
+
+ @CriteriaEntitySearch(libelle = "Adresse IP", rang = 4)
+ @NotEmpty(message = "L'addresse IP est obligatoire")
+ private String ipAddress;
+
+ @CriteriaEntitySearch(libelle = "Statut requete", visible = false)
+ private Integer status;
+
+ @CriteriaEntitySearch(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ @CriteriaEntitySearch(libelle = "Path", visible = false)
+ private String relativePath;
+
+ private String httpMethod;
+
+ @CriteriaEntitySearch(libelle = "Motif erreur", rang = 6, visible = false)
+ private String motif;
+
+ public JournalActionUtilisateur() {
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 11 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final JournalActionUtilisateur other = (JournalActionUtilisateur) obj;
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(JournalActionUtilisateur parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+ if (parameter.id == null) {
+ return -1;
+ }
+ if (id == null) {
+ return 1;
+ }
+ return id.compareTo(parameter.id);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalConnexionUtilisateur.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalConnexionUtilisateur.java
new file mode 100644
index 0000000..20cf9c4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/JournalConnexionUtilisateur.java
@@ -0,0 +1,111 @@
+package com.megatim.fdxconsultation.model.administration;
+
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "JournalConnexionUtilisateur")
+@Table(name = "useractionlog")
+public class JournalConnexionUtilisateur implements Comparable<JournalConnexionUtilisateur>, Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_USER_ACTION_LOGS",
+ sequenceName = "SEQ_USER_ACTION_LOGS",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_USER_ACTION_LOGS")
+ private Long id;
+
+ @NotEmpty(message = "La description est obligatoire")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ private String message;
+
+ //@CriteriaEntitySearch(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ //@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ @NotNull(message = "La date de l'action est obligatoire")
+ @CriteriaEntitySearch(libelle = "Date", rang = 1)
+ private LocalDateTime dateAction;
+
+ @CriteriaEntitySearch(libelle = "Adresse IP", rang = 4)
+ @NotEmpty(message = "L'addresse IP est obligatoire")
+ private String ipAddress;
+
+ @CriteriaEntitySearch(libelle = "Statut requete", visible = false)
+ private Integer status;
+
+ @CriteriaEntitySearch(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ @CriteriaEntitySearch(libelle = "Path", visible = false)
+ private String relativePath;
+
+ private String httpMethod;
+
+ @CriteriaEntitySearch(libelle = "Motif erreur", visible = false)
+ private String motif;
+
+ public JournalConnexionUtilisateur() {
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 11 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final JournalConnexionUtilisateur other = (JournalConnexionUtilisateur) obj;
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(JournalConnexionUtilisateur parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+ if (parameter.id == null) {
+ return -1;
+ }
+ if (id == null) {
+ return 1;
+ }
+ return id.compareTo(parameter.id);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Role.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Role.java
new file mode 100644
index 0000000..a6866ba
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/Role.java
@@ -0,0 +1,176 @@
+package com.megatim.fdxconsultation.model.administration;
+
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.OneToMany;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "Role")
+@Table(name = "FDX_ROLE")
+public class Role implements Comparable<Role>, Serializable {
+
+ @SequenceGenerator(name = "SEQ_ROLE",
+ sequenceName = "SEQ_ROLE",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ROLE")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "ID_GENERER")
+ protected String idGenerer;
+
+ @Column(nullable = false, name = "libelle")
+ @NotEmpty(message = "Le libellé est obligatoire")
+ @CriteriaEntitySearch(libelle = "Libellé", rang = 1)
+ private String libelle;
+
+ @Column(name = "description")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ private String description;
+
+ @Column(name = "motif_rejet")
+ private String motifRejet;
+
+ @Column(name = "DATE_VAL")
+ @Temporal(value = TemporalType.TIMESTAMP)
+ private Date dateValidation;
+
+ @Column(name = "USER_VAL")
+ private String utilisateurValidation;
+
+ @Column(name = "DATE_RJT_VAL")
+ @Temporal(value = TemporalType.TIMESTAMP)
+ private Date dateRejetValidation;
+
+ @Column(name = "USER_RJT")
+ private String utilisateurRejetValidation;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Column(name = "ETAT_OPERATION")
+ @CriteriaEntitySearch(libelle = "Etat", visible = false)
+ @Enumerated(EnumType.STRING)
+ private EtatOperation etatOperation;
+
+ @Column(name = "IS_ADMIN")
+ private Boolean admin = false;
+
+ @Column(name = "IS_SUPER_ADMIN")
+ private Boolean superAdmin = false;
+
+ @Column(name = "IS_MEGA_ADMIN")
+ private Boolean megaAdmin = false;
+
+ @OneToMany(mappedBy = "role")
+ private List<User> users = new ArrayList<>();
+
+ @ManyToMany(fetch = FetchType.EAGER)
+ @JoinTable(
+ name = "FS_ROLE_ACTION",
+ joinColumns = @JoinColumn(name = "FS_ROLE_ID"),
+ inverseJoinColumns = @JoinColumn(name = "FS_ACTION_ID"))
+ private List<Action> actions = new ArrayList<>();
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ private String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ private String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ private String utilisateurSuppression;
+
+ @Transient
+ private int nbreUtilisateur;
+
+ public Role() {
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 11 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Role other = (Role) obj;
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(Role parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+ if (parameter.libelle == null || parameter.libelle.trim().length() == 0) {
+ return -1;
+ }
+ if (libelle == null || libelle.trim().length() == 0) {
+ return 1;
+ }
+ return libelle.compareTo(parameter.libelle);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/User.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/User.java
new file mode 100644
index 0000000..52f0827
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/User.java
@@ -0,0 +1,252 @@
+package com.megatim.fdxconsultation.model.administration;
+
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Sexe;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "User")
+@Table(name = "FDX_USER")
+public class User implements Comparable<User>, Serializable {
+
+ public User() {
+ }
+
+ @SequenceGenerator(name = "SEQ_USER",
+ sequenceName = "SEQ_USER",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_USER")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "ID_GENERER")
+ protected String idGenerer;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Column(name = "username")
+ @CriteriaEntitySearch(libelle = "Nom utilisateur", rang = 1, fieldName = "userName")
+ private String userName;
+
+ @Column(name = "firstname")
+ @CriteriaEntitySearch(libelle = "Nom", rang = 3, fieldName = "firstName")
+ private String firstName;
+
+ @Column(name = "lastname")
+ @CriteriaEntitySearch(libelle = "Prénom", rang = 2, fieldName = "lastName")
+ private String lastName;
+
+ @Column(name = "motif_rejet")
+ private String motifRejet;
+
+ @Column(name = "DATE_VAL")
+ @Temporal(value = TemporalType.TIMESTAMP)
+ private Date dateValidation;
+
+ @Column(name = "USER_VAL")
+ private String utilisateurValidation;
+
+ @Column(name = "DATE_RJT_VAL")
+ @Temporal(value = TemporalType.TIMESTAMP)
+ private Date dateRejetValidation;
+
+ @Column(name = "USER_RJT")
+ private String utilisateurRejetValidation;
+
+ @Column(name = "expirationdelay")
+ private int expirationDelay;
+
+ @Column(name = "alertdelay")
+ private int alertDelay;
+
+ @Column(name = "attempsnumber")
+ private int attempsNumber;
+
+ @Column(name = "attemps")
+ private int attemps;
+
+ @Column(name = "locked")
+ private boolean locked;
+
+ @Column(name = "active")
+ private boolean active;
+
+ @Column(name = "editpassword")
+ private boolean editPassword;
+
+ @Column(name = "connected")
+ private boolean connected;
+
+ @Transient
+ private boolean updatePassword;
+
+ @Column(name = "lastconnexiondatetime")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date lastConnexionDateTime;
+
+ @Column(name = "pwd")
+ private String pwd;
+
+ @Transient
+ private String pwdConfirm;
+
+ @Column(name = "lastdateupdatepwd")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModificationMotDePasse;
+
+ @Column(name = "DELAI_INACTIVITE")
+ private int delaiInactivite = 0;
+
+ @Column(name = "SESSION_KEY")
+ private String cleSession;
+
+ @NotNull(message = "Le sexe est obligatoire")
+ @Column(name = "SEXE")
+ @Enumerated(EnumType.STRING)
+ private Sexe sexe = Sexe.HOMME;
+
+ @Column(name = "ETAT_OPERATION")
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Etat", visible = false, fieldName = "etatOperation")
+ private EtatOperation etatOperation;
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ private String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ private String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ private String utilisateurSuppression;
+
+ @ManyToOne
+ @JoinColumn(name = "ROLE")
+ @CriteriaEntitySearch(libelle = "Groupe utilisateur", fieldName = "role.libelle", rang = 4)
+ private Role role;
+
+ @ManyToMany
+ @JoinTable(name = "user_type_fichier",
+ joinColumns = @JoinColumn(name = "user_id"),
+ inverseJoinColumns = @JoinColumn(name = "type_fichier_id"))
+ private Set<TypeFichier> typeFichiers = new HashSet<>();
+
+ @ManyToMany
+ @JoinTable(name = "user_participant",
+ joinColumns = @JoinColumn(name = "user_id"),
+ inverseJoinColumns = @JoinColumn(name = "participant_id"))
+ private Set<Participant> participants = new HashSet<Participant>();
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 79 * hash + Objects.hashCode(this.userName);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final User other = (User) obj;
+ return Objects.equals(this.userName, other.userName);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(User parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+
+ // Si le code du parametre est vide
+ if (parameter.userName == null || parameter.userName.trim().length() == 0) {
+ return -1;
+ }
+
+ // Si le code du parametre en cours est vide
+ if (userName == null || userName.trim().length() == 0) {
+ return 1;
+ }
+
+ // On retourne la comparaison des codes
+ return userName.compareTo(parameter.userName);
+ }
+
+ @Override
+ public String toString() {
+
+ //Variables
+ String variable = "";
+
+ if (this.lastName != null) {
+ variable = variable + this.lastName;
+ }
+
+ if (this.firstName != null) {
+ variable = variable + " " + this.firstName;
+ }
+
+ if (this.userName != null) {
+ variable = variable + " (" + this.userName + ")";
+ }
+
+ return variable;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/ActionSecurity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/ActionSecurity.java
new file mode 100644
index 0000000..348b4a7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/ActionSecurity.java
@@ -0,0 +1,167 @@
+package com.megatim.fdxconsultation.model.administration.security;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.mgt.rs.security.core.ifaces.ActionRsSecurity;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+public class ActionSecurity implements Comparable<ActionSecurity>, Serializable, ActionRsSecurity {
+
+ private Long id;
+
+ private String path;
+
+ private String module;
+
+ private String name;
+
+ private String categorie;
+
+ private String description;
+
+ protected String idGenerer;
+
+ private List<RoleSecurity> roles = new ArrayList<>();
+
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCategorie() {
+ return categorie;
+ }
+
+ public void setCategorie(String categorie) {
+ this.categorie = categorie;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getIdGenerer() {
+ return idGenerer;
+ }
+
+ public void setIdGenerer(String idGenerer) {
+ this.idGenerer = idGenerer;
+ }
+
+ public List<RoleSecurity> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleSecurity> roles) {
+ this.roles = roles;
+ }
+
+ public TypeOperation getTypeOperation() {
+ return typeOperation;
+ }
+
+ public void setTypeOperation(TypeOperation typeOperation) {
+ this.typeOperation = typeOperation;
+ }
+
+ public ActionSecurity() {
+ }
+
+ public ActionSecurity(Action action) {
+
+ path = action.getPath();
+ module = action.getModule();
+ name = action.getName();
+ categorie = action.getCategorie();
+ description = action.getDescription();
+
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 79 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final ActionSecurity other = (ActionSecurity) obj;
+ return Objects.equals(this.id, other.id);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(ActionSecurity parameter) {
+
+ // Si le parametre est null
+ if (parameter == null) {
+ return -1;
+ }
+
+ // Si le code du parametre est vide
+ if (parameter.id == null) {
+ return -1;
+ }
+
+ // Si le code du parametre en cours est vide
+ if (id == null) {
+ return 1;
+ }
+
+ // On retourne la comparaison des codes
+ return id.compareTo(parameter.id);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/RoleSecurity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/RoleSecurity.java
new file mode 100644
index 0000000..e3777f3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/RoleSecurity.java
@@ -0,0 +1,252 @@
+package com.megatim.fdxconsultation.model.administration.security;
+
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.mgt.rs.security.core.ifaces.ActionRsSecurity;
+import com.mgt.rs.security.core.ifaces.RoleRsSecurity;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+public class RoleSecurity implements Comparable<RoleSecurity>, Serializable, RoleRsSecurity {
+
+ private Long id;
+
+ protected String idGenerer;
+
+ private String libelle;
+
+ private String description;
+
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ private EtatOperation etatOperation;
+
+ private List<ActionRsSecurity> actions = new ArrayList<ActionRsSecurity>();
+
+ private Date dateCreation;
+
+ private String utilisateurCreation;
+
+ private Date dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private Date dateSuppression;
+
+ private String utilisateurSuppression;
+
+ private Boolean admin = false;
+
+ private Boolean superAdmin = false;
+
+ private Boolean megaAdmin = false;
+
+ public RoleSecurity() {
+ }
+
+ public RoleSecurity(Role role) {
+ admin = role.getAdmin();
+ superAdmin = role.getSuperAdmin();
+ megaAdmin = role.getMegaAdmin();
+
+ //On parcourt lrs roles
+ for(Action action : role.getActions()){
+ actions.add(new ActionSecurity(action));
+ }
+
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getLibelle() {
+ return libelle;
+ }
+
+ public void setLibelle(String libelle) {
+ this.libelle = libelle;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public TypeOperation getTypeOperation() {
+ return typeOperation;
+ }
+
+ public void setTypeOperation(TypeOperation typeOperation) {
+ this.typeOperation = typeOperation;
+ }
+
+ public String getIdGenerer() {
+ return idGenerer;
+ }
+
+ public void setIdGenerer(String idGenerer) {
+ this.idGenerer = idGenerer;
+ }
+
+ public void setActions(List<ActionRsSecurity> actions) {
+ this.actions = actions;
+ }
+
+ public Date getDateCreation() {
+ return dateCreation;
+ }
+
+ public void setDateCreation(Date dateCreation) {
+ this.dateCreation = dateCreation;
+ }
+
+ public String getUtilisateurCreation() {
+ return utilisateurCreation;
+ }
+
+ public void setUtilisateurCreation(String utilisateurCreation) {
+ this.utilisateurCreation = utilisateurCreation;
+ }
+
+ public Date getDateDerniereModification() {
+ return dateDerniereModification;
+ }
+
+ public void setDateDerniereModification(Date dateDerniereModification) {
+ this.dateDerniereModification = dateDerniereModification;
+ }
+
+ public String getUtilisateurModification() {
+ return utilisateurModification;
+ }
+
+ public void setUtilisateurModification(String utilisateurModification) {
+ this.utilisateurModification = utilisateurModification;
+ }
+
+ public Date getDateSuppression() {
+ return dateSuppression;
+ }
+
+ public void setDateSuppression(Date dateSuppression) {
+ this.dateSuppression = dateSuppression;
+ }
+
+ public String getUtilisateurSuppression() {
+ return utilisateurSuppression;
+ }
+
+ public void setUtilisateurSuppression(String utilisateurSuppression) {
+ this.utilisateurSuppression = utilisateurSuppression;
+ }
+
+ public EtatOperation getEtatOperation() {
+ return etatOperation;
+ }
+
+ public void setEtatOperation(EtatOperation etatOperation) {
+ this.etatOperation = etatOperation;
+ }
+
+ /*public List<User> getUsers() {
+ return users;
+ }
+
+ public void setUsers(List<User> users) {
+ this.users = users;
+ }*/
+ public boolean isAdmin() {
+ return admin;
+ }
+
+ public void setAdmin(boolean admin) {
+ this.admin = admin;
+ }
+
+ public boolean isSuperAdmin() {
+ return superAdmin;
+ }
+
+ public void setSuperAdmin(boolean superAdmin) {
+ this.superAdmin = superAdmin;
+ }
+
+ public boolean isMegaAdmin() {
+ return megaAdmin;
+ }
+
+ public void setMegaAdmin(boolean meegaAdmin) {
+ this.megaAdmin = meegaAdmin;
+ }
+
+ @Override
+ public List<ActionRsSecurity> getActions() {
+ return actions;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 79 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final RoleSecurity other = (RoleSecurity) obj;
+ return Objects.equals(this.id, other.id);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(RoleSecurity parameter) {
+
+ // Si le parametre est null
+ if (parameter == null) {
+ return -1;
+ }
+
+ // Si le code du parametre est vide
+ if (parameter.libelle == null || parameter.libelle.trim().length() == 0) {
+ return -1;
+ }
+
+ // Si le code du parametre en cours est vide
+ if (libelle == null || libelle.trim().length() == 0) {
+ return 1;
+ }
+
+ // On retourne la comparaison des codes
+ return libelle.compareTo(parameter.libelle);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/UserSecurity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/UserSecurity.java
new file mode 100644
index 0000000..6e5d39c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/administration/security/UserSecurity.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxconsultation.model.administration.security;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import com.mgt.rs.security.core.ifaces.RoleRsSecurity;
+import com.mgt.rs.security.core.ifaces.UserRsSecurity;
+
+/**
+ *
+ * @author ASUS
+ */
+public class UserSecurity implements UserRsSecurity{
+
+ private String userName;
+ private RoleSecurity roleSecurity;
+
+ public UserSecurity(){}
+
+ public UserSecurity(User user){
+ this.userName = user.getUserName();
+ roleSecurity = new RoleSecurity(user.getRole());
+ }
+
+ @Override
+ public String getUserName() {
+ return userName;
+ }
+
+ @Override
+ public RoleRsSecurity getRole() {
+ return roleSecurity;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiToken.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiToken.java
new file mode 100644
index 0000000..b90727e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiToken.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.model.api.token;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotNull;
+import lombok.Data;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.util.Date;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+/**
+ *
+ * @author ASUS
+ */
+@Data
+@Entity
+public class ApiToken implements Serializable {
+
+ @SequenceGenerator(name = "SEQ_API_TOKEN",
+ sequenceName = "SEQ_API_TOKEN",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_API_TOKEN")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @NotNull(message = "Le participant est obligatoire")
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Participant", fieldName = "participant.code", rang = 2)
+ private Participant participant;
+
+ @Lob
+ @Basic(fetch = FetchType.EAGER)
+ private String token;
+
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Statut du token", rang = 3, visible = false)
+ private ApiTokenStatut apiTokenStatut = ApiTokenStatut.UNLOCKED;
+
+ @CriteriaEntitySearch(libelle = "type Operation", visible = false)
+ @Column(name = "TYPE_OPERATION")
+ protected TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @CriteriaEntitySearch(libelle = "Date première génération", rang = 1)
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateCreation;
+
+ @CriteriaEntitySearch(libelle = "Généré par", rang = 4)
+ @Column(name = "USER_CREATION")
+ protected String utilisateurCreation;
+
+ @CriteriaEntitySearch(libelle = "Date dernière regen.", rang = 5, visible = false)
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateDerniereModification;
+
+ @CriteriaEntitySearch(libelle = "Regénéré par", rang = 6, visible = false)
+ @Column(name = "USER_UPDATE")
+ protected String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ protected String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiTokenStatut.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiTokenStatut.java
new file mode 100644
index 0000000..b4ea57e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/api/token/ApiTokenStatut.java
@@ -0,0 +1,37 @@
+package com.megatim.fdxconsultation.model.api.token;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public enum ApiTokenStatut {
+
+ UNLOCKED("ACTIF"),
+ LOCKED("INACTIF");
+
+ private final String value;
+
+ private ApiTokenStatut(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @EnumValue
+ public static ApiTokenStatut fromValeur(String value) {
+ switch (value) {
+ case "INACTIF":
+ return ApiTokenStatut.LOCKED;
+ case "ACTIF":
+ return ApiTokenStatut.UNLOCKED;
+ default:
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/authentification/LoginRequest.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/authentification/LoginRequest.java
new file mode 100644
index 0000000..62274f3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/authentification/LoginRequest.java
@@ -0,0 +1,15 @@
+package com.megatim.fdxconsultation.model.authentification;
+
+import lombok.Data;
+
+/**
+ *
+ * @author lenovo
+ */
+@Data
+public class LoginRequest {
+
+ private String userName;
+ private String pwd;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/base/BaseEntity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/base/BaseEntity.java
new file mode 100644
index 0000000..1a7ec0d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/base/BaseEntity.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.model.base;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@MappedSuperclass
+@Getter
+@Setter
+@EqualsAndHashCode
+public class BaseEntity {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(name = "TYPE_OPERATION")
+ protected TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ protected String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ protected String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ protected Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ protected String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/configuration/CodeStatutHttp.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/configuration/CodeStatutHttp.java
new file mode 100644
index 0000000..504a428
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/configuration/CodeStatutHttp.java
@@ -0,0 +1,124 @@
+package com.megatim.fdxconsultation.model.configuration;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+@Entity(name = "CodeStatutHttp")
+@Table(name = "FDX_CODE_STATUT_HTTP")
+public class CodeStatutHttp implements Comparable<CodeStatutHttp>, Serializable {
+
+ @SequenceGenerator(name = "SEQ_FDX_CODE_STATUT_HTTP",
+ sequenceName = "SEQ_FDX_CODE_STATUT_HTTP",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_FDX_CODE_STATUT_HTTP")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "ID_GENERER")
+ protected String idGenerer;
+
+ @Column(name = "CODE")
+ private String code;
+
+ @Column(nullable = false, name = "LIBELLE")
+ private String libelle;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ private String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ private String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ private String utilisateurSuppression;
+
+ @Transient
+ private int nbreUtilisateur;
+
+ public CodeStatutHttp() {}
+
+ public CodeStatutHttp(String code, String libelle) {
+ this.code = code;
+ this.libelle = libelle;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 11 * hash + Objects.hashCode(this.id);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final CodeStatutHttp other = (CodeStatutHttp) obj;
+ if (!Objects.equals(this.id, other.id)) {
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(CodeStatutHttp parameter) {
+ if (parameter == null) {
+ return -1;
+ }
+ if (parameter.code == null || parameter.code.trim().length() == 0) {
+ return -1;
+ }
+ if (code == null || code.trim().length() == 0) {
+ return 1;
+ }
+ return code.compareTo(parameter.code);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dataproduction/DataProduction.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dataproduction/DataProduction.java
new file mode 100644
index 0000000..dfe5759
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dataproduction/DataProduction.java
@@ -0,0 +1,26 @@
+/*
+ * 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.model.dataproduction;
+
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class DataProduction extends CommonDataProduction {
+
+ @Id
+ private Long id;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Category.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Category.java
new file mode 100644
index 0000000..4ad90a9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Category.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxconsultation.model.documents;
+
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.Entity;
+import javax.persistence.OneToMany;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Setter
+@Getter
+@Entity
+public class Category extends BaseEntity implements Serializable {
+
+ private String name;
+ private int position;
+
+ @OneToMany(mappedBy = "category")
+ private Set<Document> documents = new HashSet<>();
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Document.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Document.java
new file mode 100644
index 0000000..25544d7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/documents/Document.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.model.documents;
+
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import com.megatim.file.model.entites.ItemFile;
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Setter
+@Getter
+@Entity
+@Table(name = "FDX_DOCUMENT")
+public class Document extends BaseEntity implements Serializable {
+
+ private String label;
+ private String version;
+ private int position;
+
+ @ManyToOne
+ private Category category;
+
+ @OneToOne
+ private ItemFile itemFile;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionDto.java
new file mode 100644
index 0000000..195dae8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionDto.java
@@ -0,0 +1,109 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+
+/**
+ *
+ * @author bissey
+ */
+public class ActionDto {
+
+ private Long id;
+
+ private String path;
+
+ private String module;
+
+ private String name;
+
+ private String categorie;
+
+ private String description;
+
+ private Boolean autorise;
+
+ protected String idGenerer;
+
+ private TypeOperation typeOperation;
+
+ public ActionDto() {
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getIdGenerer() {
+ return idGenerer;
+ }
+
+ public void setIdGenerer(String idGenerer) {
+ this.idGenerer = idGenerer;
+ }
+
+ public TypeOperation getTypeOperation() {
+ return typeOperation;
+ }
+
+ public void setTypeOperation(TypeOperation typeOperation) {
+ this.typeOperation = typeOperation;
+ }
+
+ public Boolean getAutorise() {
+ return autorise;
+ }
+
+ public void setAutorise(Boolean autorise) {
+ this.autorise = autorise;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getCategorie() {
+ return categorie;
+ }
+
+ public void setCategorie(String categorie) {
+ this.categorie = categorie;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionSlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionSlimDto.java
new file mode 100644
index 0000000..3ba5f8c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ActionSlimDto.java
@@ -0,0 +1,110 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+
+/**
+ *
+ * @author bissey
+ */
+public class ActionSlimDto {
+
+ private Long id;
+
+ private String path;
+
+ private String module;
+
+ private String name;
+
+ private String categorie;
+
+ private String description;
+
+ private Boolean autorise;
+
+ protected String idGenerer;
+
+ private TypeOperation typeOperation;
+
+ public ActionSlimDto() {
+ }
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public String getModule() {
+ return module;
+ }
+
+ public void setModule(String module) {
+ this.module = module;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getCategorie() {
+ return categorie;
+ }
+
+ public void setCategorie(String categorie) {
+ this.categorie = categorie;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Boolean getAutorise() {
+ return autorise;
+ }
+
+ public void setAutorise(Boolean autorise) {
+ this.autorise = autorise;
+ }
+
+ public String getIdGenerer() {
+ return idGenerer;
+ }
+
+ public void setIdGenerer(String idGenerer) {
+ this.idGenerer = idGenerer;
+ }
+
+ public TypeOperation getTypeOperation() {
+ return typeOperation;
+ }
+
+ public void setTypeOperation(TypeOperation typeOperation) {
+ this.typeOperation = typeOperation;
+ }
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/AdministrationNumberDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/AdministrationNumberDto.java
new file mode 100644
index 0000000..9eec29e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/AdministrationNumberDto.java
@@ -0,0 +1,23 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author lenovo
+ */
+@Setter
+@Getter
+public class AdministrationNumberDto implements Serializable {
+
+ private long utilisateursEnAttenteValidation;
+ private long rolesEnAttenteValidation;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ApiTokenDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ApiTokenDto.java
new file mode 100644
index 0000000..0f7e412
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ApiTokenDto.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxconsultation.model.api.token.ApiTokenStatut;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Setter
+@Getter
+public class ApiTokenDto {
+
+ private Long id;
+
+ private ParticipantSlimDto participant;
+
+ private String token;
+
+ private int validite;
+
+ private ApiTokenStatut apiTokenStatut = ApiTokenStatut.UNLOCKED;
+
+ protected Date dateCreation;
+
+ protected String utilisateurCreation;
+
+ protected Date dateDerniereModification;
+
+ protected String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/BaseEntityDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/BaseEntityDto.java
new file mode 100644
index 0000000..113f09f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/BaseEntityDto.java
@@ -0,0 +1,29 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class BaseEntityDto {
+
+ private Long id;
+
+ protected Date dateCreation;
+
+ protected String utilisateurCreation;
+
+ protected Date dateDerniereModification;
+
+ protected String utilisateurModification;
+
+ protected Date dateSuppression;
+
+ protected String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategoryDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategoryDto.java
new file mode 100644
index 0000000..25f617c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategoryDto.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import java.util.HashSet;
+import java.util.Set;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class CategoryDto extends BaseEntityDto {
+
+ private String name;
+ private int position;
+
+ private Set<DocumentDto> documents = new HashSet<>();
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategorySlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategorySlimDto.java
new file mode 100644
index 0000000..b77ce57
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CategorySlimDto.java
@@ -0,0 +1,17 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class CategorySlimDto extends BaseEntityDto {
+
+ private String name;
+ private int position;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CodeStatutHttpDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CodeStatutHttpDto.java
new file mode 100644
index 0000000..17baaf1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/CodeStatutHttpDto.java
@@ -0,0 +1,43 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class CodeStatutHttpDto {
+
+ private Long id;
+
+ protected String idGenerer;
+
+ private String code;
+
+ private String libelle;
+
+ private TypeOperation typeOperation;
+
+ private Date dateCreation;
+
+ private String utilisateurCreation;
+
+ private Date dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private Date dateSuppression;
+
+ private String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/DocumentDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/DocumentDto.java
new file mode 100644
index 0000000..3da5ac6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/DocumentDto.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.file.model.dtos.ItemFileDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class DocumentDto extends BaseEntityDto {
+
+ private String label;
+
+ private String version;
+
+ private int position;
+
+ private CategorySlimDto category;
+
+ private ItemFileDto itemFile;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/EditPasswordDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/EditPasswordDto.java
new file mode 100644
index 0000000..507f1bb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/EditPasswordDto.java
@@ -0,0 +1,20 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import javax.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class EditPasswordDto {
+
+ @NotBlank(message = "Le mot de passe actuel est obligatoire")
+ private String actualPassword;
+
+ @NotBlank(message = "Le nouveau mot de passe est obligatoire")
+ private String newPassword;
+
+ @NotBlank(message = "La confirmation du nouveau mot de passe est obligatoire")
+ private String newPasswordConfirm;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/FavoriteSearchDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/FavoriteSearchDto.java
new file mode 100644
index 0000000..92727bf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/FavoriteSearchDto.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class FavoriteSearchDto extends BaseEntityDto {
+
+ private String libelle;
+
+ private String codeTypeFichier;
+
+ private String referentielVersion;
+
+ private CriteriaEntityFromView criteria;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/InformationGeneraleDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/InformationGeneraleDto.java
new file mode 100644
index 0000000..ad608fa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/InformationGeneraleDto.java
@@ -0,0 +1,24 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * Classe representant un DTO de InformationGeneraleDto
+ */
+@Getter
+@Setter
+public class InformationGeneraleDto {
+
+ private Date dateServeur = new Date();
+ private String sessionKeyUser;
+ private boolean etatServeur;
+ private String messageEtatServeur;
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalActionUtilisateurDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalActionUtilisateurDto.java
new file mode 100644
index 0000000..227826e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalActionUtilisateurDto.java
@@ -0,0 +1,34 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.Gravite;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class JournalActionUtilisateurDto {
+
+ private Long id;
+ private String message;
+ private String userName;
+ private LocalDateTime dateAction;
+ private String ipAddress;
+ private Integer status;
+ private String userAgent;
+ private String relativePath;
+ private String httpMethod;
+ private String motif;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalConnexionUtilisateurDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalConnexionUtilisateurDto.java
new file mode 100644
index 0000000..4426ec8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/JournalConnexionUtilisateurDto.java
@@ -0,0 +1,34 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.Gravite;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class JournalConnexionUtilisateurDto {
+
+ private Long id;
+ private String message;
+ private String userName;
+ private LocalDateTime dateAction;
+ private String ipAddress;
+ private Integer status;
+ private String userAgent;
+ private String relativePath;
+ private String httpMethod;
+ private String motif;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/MessageSystemeDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/MessageSystemeDto.java
new file mode 100644
index 0000000..eb8553f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/MessageSystemeDto.java
@@ -0,0 +1,26 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.*;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * Classe representant un DTO de MessageSysteme
+ */
+@Getter
+@Setter
+public class MessageSystemeDto {
+
+ private Long id;
+ private TypeIdMessageSysteme typeIdMessageSysteme;
+ private TypeMessageSysteme typeMessageSysteme;
+ private TypeActionSysteme TypeActionSysteme;
+ private String contenu;
+
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ParticipantToFichierDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ParticipantToFichierDto.java
new file mode 100644
index 0000000..2a69c0c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/ParticipantToFichierDto.java
@@ -0,0 +1,23 @@
+/*
+ * 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.model.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author lenovo
+ */
+@Getter
+@Setter
+@AllArgsConstructor
+public class ParticipantToFichierDto {
+
+ private String codeParticipant;
+ private String codeFichier;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleDto.java
new file mode 100644
index 0000000..275b87a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleDto.java
@@ -0,0 +1,60 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+
+
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.util.Date;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class RoleDto {
+
+ private Long id;
+
+ protected String idGenerer;
+
+ private String libelle;
+
+ private String description;
+
+ private boolean admin;
+
+ private boolean superAdmin;
+
+ private boolean megaAdmin;
+
+ private TypeOperation typeOperation;
+
+ private EtatOperation etatOperation;
+
+ private int nbreUtilisateur;
+
+ private List<ActionDto> actions;
+
+ private Date dateCreation;
+
+ private String utilisateurCreation;
+
+ private Date dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private Date dateSuppression;
+
+ private String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleSlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleSlimDto.java
new file mode 100644
index 0000000..b162f0f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/RoleSlimDto.java
@@ -0,0 +1,33 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class RoleSlimDto {
+
+ private Long id;
+
+ private String libelle;
+
+ private String description;
+
+ private boolean admin;
+
+ private boolean superAdmin;
+
+ private int nbreUtilisateur;
+
+ private boolean megaAdmin;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserDto.java
new file mode 100644
index 0000000..6b930e9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserDto.java
@@ -0,0 +1,49 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Sexe;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.util.Date;
+import java.util.Set;
+import lombok.Getter;
+import lombok.Setter;
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class UserDto {
+
+ private Long id;
+ private String userName;
+ private String firstName;
+ private String lastName;
+ private int expirationDelay;
+ private int alertDelay;
+ private int attempsNumber;
+ private int attemps;
+ private boolean locked;
+ private boolean active;
+ private boolean connected;
+ private EtatOperation etatOperation;
+ private int delaiInactivite;
+ private String cleSession;
+ private Sexe sexe;
+ private RoleDto role;
+ private Set<TypeFichierSlimDto> typeFichiers;
+ private Set<ParticipantSlimDto> participants;
+ private Date dateCreation;
+ private String utilisateurCreation;
+ private Date dateDerniereModification;
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserSlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserSlimDto.java
new file mode 100644
index 0000000..6a0c376
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/UserSlimDto.java
@@ -0,0 +1,42 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.dto;
+
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class UserSlimDto {
+
+ private Long id;
+ private String userName;
+ private String firstName;
+ private String lastName;
+ private int expirationDelay;
+ private int alertDelay;
+ private int attempsNumber;
+ private int attemps;
+ private boolean locked;
+ private boolean active;
+ private boolean connected;
+ private int delaiInactivite;
+ private EtatOperation etatOperation;
+ private RoleSlimDto role;
+ private Date dateCreation;
+ private String utilisateurCreation;
+ private Date dateDerniereModification;
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionLogDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionLogDto.java
new file mode 100644
index 0000000..3a337ab
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionLogDto.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.model.dto.log;
+
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class UserActionLogDto {
+
+ private Long id;
+
+ @PrintColumn(libelle = "Message", rang = 3)
+ private String message;
+
+ @PrintColumn(libelle = "Nom de l'utilisateur", rang = 1)
+ private String userName;
+
+ @PrintColumn(libelle = "Date de l'action", rang = 2)
+ private LocalDateTime dateAction;
+
+ @PrintColumn(libelle = "Adresse IP source", rang = 4)
+ private String ipAddress;
+
+ @PrintColumn(libelle = "Statut de l'action", rang = 5)
+ private int status;
+
+ private String httpMethod;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatData.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatData.java
new file mode 100644
index 0000000..26b324c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatData.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.dto.log;
+
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class UserActionStatData {
+
+ private String libelle;
+ private List<UserActionStatDto> data = new ArrayList<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatDto.java
new file mode 100644
index 0000000..996dbf4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/log/UserActionStatDto.java
@@ -0,0 +1,21 @@
+/*
+ * 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.model.dto.log;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class UserActionStatDto {
+
+ private String libelle;
+
+ private Long value;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/FonctionAggregationCriterionDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/FonctionAggregationCriterionDto.java
new file mode 100644
index 0000000..4a00645
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/FonctionAggregationCriterionDto.java
@@ -0,0 +1,17 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import com.megatim.fdxconsultation.model.enums.FonctionAggregationOperateur;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class FonctionAggregationCriterionDto {
+
+ private FonctionAggregationOperateur operateur;
+ private Object criteriaValue;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/GroupingColumnDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/GroupingColumnDto.java
new file mode 100644
index 0000000..3a3ffe3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/GroupingColumnDto.java
@@ -0,0 +1,20 @@
+/*
+ * 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.model.dto.stats;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupingColumnDto {
+
+ private String label;
+ private Object value;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatListResult.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatListResult.java
new file mode 100644
index 0000000..285172d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatListResult.java
@@ -0,0 +1,26 @@
+/*
+ * 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.model.dto.stats;
+
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class StatListResult {
+
+ private String libelle;
+
+ private TypeResultatConfiguration typeResultatConfiguration;
+
+ private List<StatScalarResult> values = new ArrayList<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatResultDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatResultDto.java
new file mode 100644
index 0000000..22d4bb6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatResultDto.java
@@ -0,0 +1,25 @@
+/*
+ * 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.model.dto.stats;
+
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class StatResultDto {
+
+ private String description;
+
+ private List<StatScalarResult> scalarResults = new ArrayList<>();
+
+ private List<StatListResult> listResults = new ArrayList<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatScalarResult.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatScalarResult.java
new file mode 100644
index 0000000..fc84527
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/StatScalarResult.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class StatScalarResult {
+
+ private String libelle;
+
+ private String color;
+
+ private Object value;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationDto.java
new file mode 100644
index 0000000..3306c70
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationDto.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.validation.constraints.NotEmpty;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class TableConfigurationDto {
+
+ @NotEmpty(message = "Le libellé est obligatoire")
+ private String libelle;
+
+ @NotEmpty(message = "La fonction d'aggrégation est obligatoire")
+ private FonctionAggregation fonctionAggregation;
+
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Type de Résultat")
+ private TypeResultatConfiguration typeResultatConfiguration;
+
+ private TableauBordColumnDto targetedColumn;
+
+ private Set<TableauBordColumnDto> groupingColumns = new HashSet<>();
+
+ private CriteriaEntityFromView criterion;
+
+ private String color;
+
+ private FonctionAggregationCriterionDto fonctionAggregationCriterion;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationSlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationSlimDto.java
new file mode 100644
index 0000000..ad1a20f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableConfigurationSlimDto.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.dto.stats;
+
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class TableConfigurationSlimDto {
+
+ private String libelle;
+
+ private FonctionAggregation fonctionAggregation;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordColumnDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordColumnDto.java
new file mode 100644
index 0000000..df63bda
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordColumnDto.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class TableauBordColumnDto {
+
+ @NotEmpty(message = "Le nom de la colonne est obligatoire")
+ private String name;
+
+ @NotNull(message = "Le type de données de la colonne est obligatoire")
+ private TypeDonnee typeDonnee;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordDto.java
new file mode 100644
index 0000000..f3d8ded
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordDto.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import java.util.HashSet;
+import java.util.Set;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+public class TableauBordDto {
+
+ private Long id;
+
+ @NotNull(message = "La description est obligatoire")
+ private String description;
+
+ @NotNull(message = "La description est obligatoire")
+ private TypeFichierSlimDto typeFichier;
+
+ private ReferentielSlimDto referentiel;
+
+ private TypeConfigurationTableauBord typeConfiguration;
+
+ private Set<TableConfigurationDto> tableConfigurations = new HashSet<>();
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordQueryPojo.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordQueryPojo.java
new file mode 100644
index 0000000..c6ebc62
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordQueryPojo.java
@@ -0,0 +1,32 @@
+/*
+ * 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.model.dto.stats;
+
+import com.megatim.fdxcommons.model.pojo.QueryParameter;
+import com.megatim.fdxconsultation.model.enums.StatResultType;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableauBordQueryPojo {
+
+ private String libelle;
+
+ private String color;
+
+ private String query;
+
+ private List<QueryParameter> queryParameters = new ArrayList<>();
+
+ private StatResultType statResultType;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordSlimDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordSlimDto.java
new file mode 100644
index 0000000..c065aab
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dto/stats/TableauBordSlimDto.java
@@ -0,0 +1,27 @@
+package com.megatim.fdxconsultation.model.dto.stats;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableauBordSlimDto {
+
+ private Long id;
+
+ private String description;
+
+ private TypeFichierSlimDto typeFichier;
+
+ private ReferentielSlimDto referentiel;
+
+ private TypeConfigurationTableauBord typeConfiguration;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomFieldDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomFieldDto.java
new file mode 100644
index 0000000..5ccc530
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomFieldDto.java
@@ -0,0 +1,19 @@
+/*
+ * 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.model.dtos.reporting;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class CustomFieldDto {
+
+ private String libelle;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfiguration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfiguration.java
new file mode 100644
index 0000000..25b4ee9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfiguration.java
@@ -0,0 +1,30 @@
+/*
+ * 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.model.dtos.reporting;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.reporting.adhoc.dto.Column;
+import com.megatim.reporting.adhoc.dto.HeaderData;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class CustomTypeFichierReportConfiguration {
+
+ private CriteriaEntityFromView criterionFromView;
+
+ private String title;
+
+ private final List<Column> columns = new ArrayList<>();
+
+ private final List<HeaderData> headerDatas = new ArrayList<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfigurationFromView.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfigurationFromView.java
new file mode 100644
index 0000000..d11ab4e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/CustomTypeFichierReportConfigurationFromView.java
@@ -0,0 +1,31 @@
+/*
+ * 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.model.dtos.reporting;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.reporting.adhoc.dto.Column;
+import com.megatim.reporting.adhoc.dto.HeaderData;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class CustomTypeFichierReportConfigurationFromView {
+
+ private CriteriaEntityFromView criterionFromView ;
+
+ private String title;
+
+ private final List<Column> columns = new ArrayList<>();
+
+ private final List<HeaderData> headerDatas = new ArrayList<>();
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/ReportingDto.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/ReportingDto.java
new file mode 100644
index 0000000..db55326
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/dtos/reporting/ReportingDto.java
@@ -0,0 +1,23 @@
+/*
+ * 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.model.dtos.reporting;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ReportingDto<U> {
+
+ private ReportConfiguration<U> reportConfiguration;
+
+ private CriteriaEntityFromView criterion;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/FonctionAggregationOperateur.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/FonctionAggregationOperateur.java
new file mode 100644
index 0000000..0f3cc14
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/FonctionAggregationOperateur.java
@@ -0,0 +1,69 @@
+package com.megatim.fdxconsultation.model.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum FonctionAggregationOperateur {
+ EQUALS("="), NOT_EQUALS("<>"),
+ GREATER_THAN(">"), GREATER_OR_EQUALS_THAN(">="),
+ LOWER_THAN("<"), LOWER_OR_EQUALS_THAN("<="),
+ IN("IN"), NOT_IN("NOT IN"),
+ BETWEEN("BETWEEN"), NOT_BETWEEN("NOT BETWEEN");
+
+ private final String value;
+
+ private FonctionAggregationOperateur(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @EnumValue
+ public static FonctionAggregationOperateur fromValeur(String value) {
+ String cleanValue = value.trim().toUpperCase();
+ cleanValue = cleanValue.replaceAll("\\s+", " ");//remplacer plusieurs chaines vides par une seule chaine vide
+
+ switch (cleanValue) {
+
+ case "=":
+ return FonctionAggregationOperateur.EQUALS;
+
+ case "<>":
+ return FonctionAggregationOperateur.NOT_EQUALS;
+
+ case ">":
+ return FonctionAggregationOperateur.GREATER_THAN;
+
+ case ">=":
+ return FonctionAggregationOperateur.GREATER_OR_EQUALS_THAN;
+
+ case "<":
+ return FonctionAggregationOperateur.LOWER_THAN;
+
+ case "<=":
+ return FonctionAggregationOperateur.LOWER_OR_EQUALS_THAN;
+
+ case "IN":
+ return FonctionAggregationOperateur.IN;
+
+ case "NOT IN":
+ return FonctionAggregationOperateur.NOT_IN;
+
+ case "BETWEEN":
+ return FonctionAggregationOperateur.BETWEEN;
+
+ case "NOT BETWEEN":
+ return FonctionAggregationOperateur.NOT_BETWEEN;
+
+ default:
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/StatResultType.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/StatResultType.java
new file mode 100644
index 0000000..e871461
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/StatResultType.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxconsultation.model.enums;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum StatResultType {
+ SCALAR, LIST
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeConfigurationTableauBord.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeConfigurationTableauBord.java
new file mode 100644
index 0000000..3009e8c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeConfigurationTableauBord.java
@@ -0,0 +1,48 @@
+/*
+ * 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.model.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum TypeConfigurationTableauBord {
+ GLOBAL("GLOBAL"), USER_SPECIFIC("SPECIFIQUE A L'UTILISATEUR");
+
+ private TypeConfigurationTableauBord(String typeConfiguration) {
+ this.typeConfiguration = typeConfiguration;
+ }
+
+ private final String typeConfiguration;
+
+ @JsonValue
+ public String getTypeConfiguration() {
+ return typeConfiguration;
+ }
+
+ @EnumValue
+ public static TypeConfigurationTableauBord fromValeur(String value) {
+ if (value == null) {
+ return null;
+ }
+ if (value.equalsIgnoreCase("GLOBAL")) {
+ return TypeConfigurationTableauBord.GLOBAL;
+ } else if (value.equalsIgnoreCase("SPECIFIQUE A L'UTILISATEUR") || value.equalsIgnoreCase("USER_SPECIFIC")
+ || value.equalsIgnoreCase("USER SPECIFIC")) {
+ return TypeConfigurationTableauBord.USER_SPECIFIC;
+ } else {
+ return null;
+
+ }
+ }
+
+ @Override
+ public String toString() {
+ return typeConfiguration;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeResultatConfiguration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeResultatConfiguration.java
new file mode 100644
index 0000000..08c6432
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/enums/TypeResultatConfiguration.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxconsultation.model.enums;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.megatim.fdxcommons.model.search.EnumValue;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum TypeResultatConfiguration {
+
+ RECAPITULATIF("RECAPITULATIF"),
+ HISTOGRAMME("HISTOGRAMME"),
+ CAMEMBERT("CAMEMBERT");
+
+ private final String value;
+
+ private TypeResultatConfiguration(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ @EnumValue
+ public static TypeResultatConfiguration fromValeur(String value) {
+ if (value.equalsIgnoreCase("RECAPITULATIF")) {
+ return TypeResultatConfiguration.RECAPITULATIF;
+ } else if (value.equalsIgnoreCase("HISTOGRAMME")) {
+ return TypeResultatConfiguration.HISTOGRAMME;
+ } else if (value.equalsIgnoreCase("CAMEMBERT")) {
+ return TypeResultatConfiguration.CAMEMBERT;
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/favoritessearch/FavoriteSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/favoritessearch/FavoriteSearch.java
new file mode 100644
index 0000000..c275d66
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/favoritessearch/FavoriteSearch.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.model.favoritessearch;
+
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import com.megatim.fdxconsultation.model.stats.CriteriaEntityPersisted;
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.ManyToOne;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+@EqualsAndHashCode(callSuper = true)
+@Entity
+public class FavoriteSearch extends BaseEntity implements Serializable {
+
+ private String libelle;
+
+ private String codeTypeFichier;
+
+ private String referentielVersion;
+
+ private String userName;
+
+ @ManyToOne(cascade = CascadeType.ALL)
+ private CriteriaEntityPersisted criteria;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/RoleFormModel.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/RoleFormModel.java
new file mode 100644
index 0000000..7377fdd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/RoleFormModel.java
@@ -0,0 +1,30 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.formodel;
+
+import com.megatim.fdxconsultation.model.dto.ActionSlimDto;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author bissey
+ */
+public class RoleFormModel {
+
+ List<ActionSlimDto> actions = new ArrayList<>();
+
+ public List<ActionSlimDto> getActions() {
+ return actions;
+ }
+
+ public void setActions(List<ActionSlimDto> actions) {
+ this.actions = actions;
+ }
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/UserFormModel.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/UserFormModel.java
new file mode 100644
index 0000000..cf5ffbc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/formodel/UserFormModel.java
@@ -0,0 +1,28 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.formodel;
+
+import com.megatim.fdxconsultation.model.dto.RoleSlimDto;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author bissey
+ */
+public class UserFormModel {
+
+ List<RoleSlimDto> roles = new ArrayList<>();
+
+ public List<RoleSlimDto> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<RoleSlimDto> roles) {
+ this.roles = roles;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/integration/EchecIntegration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/integration/EchecIntegration.java
new file mode 100644
index 0000000..327c2c7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/integration/EchecIntegration.java
@@ -0,0 +1,33 @@
+/*
+ * 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.model.integration;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+public class EchecIntegration implements Serializable{
+
+ @Id
+ private Long dataProductionId;
+
+ @NotNull(message = "La date de création de l'echec d'intégration est obligatoire")
+ private LocalDateTime dateCreation;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/ApiUserActionLog.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/ApiUserActionLog.java
new file mode 100644
index 0000000..bfcb6c3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/ApiUserActionLog.java
@@ -0,0 +1,56 @@
+package com.megatim.fdxconsultation.model.log;
+
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class ApiUserActionLog implements Serializable {
+
+ @Id
+ private Long id;
+
+ @NotEmpty(message = "Le message est obligatoire")
+ @CriteriaEntitySearch(libelle = "Description", rang = 2)
+ @Lob
+ private String message;
+
+ @CriteriaEntitySearch(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ @NotNull(message = "La date de l'action est obligatoire")
+ @CriteriaEntitySearch(libelle = "Date et heure", rang = 1)
+ private LocalDateTime dateAction;
+
+ @CriteriaEntitySearch(libelle = "Adresse IP", rang = 4)
+ @NotEmpty(message = "L'addresse IP est obligatoire")
+ private String ipAddress;
+
+ @CriteriaEntitySearch(libelle = "Statut requete", visible = false)
+ private Integer status;
+
+ @CriteriaEntitySearch(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ @CriteriaEntitySearch(libelle = "Path", visible = false)
+ private String relativePath;
+
+ private String httpMethod;
+
+ private String motif;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/dtos/ApiUserActionSummarySearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/dtos/ApiUserActionSummarySearch.java
new file mode 100644
index 0000000..e36c141
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/log/dtos/ApiUserActionSummarySearch.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.model.log.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class ApiUserActionSummarySearch implements Serializable {
+
+ private Participant participant;
+ private LocalDateTime dateDebut;
+ private LocalDateTime dateFin;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/mappers/MapStructMapper.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/mappers/MapStructMapper.java
new file mode 100644
index 0000000..b2d41b6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/mappers/MapStructMapper.java
@@ -0,0 +1,203 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.mappers;
+
+import com.fdx.messaging.common.AgentConfiguration;
+import com.fdx.messaging.common.StandaloneServerState;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import com.megatim.fdxcommons.model.dtos.dataproduction.CommonDataProductionDto;
+import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.RoutageDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.RoutageSlimDto;
+import com.megatim.fdxcommons.model.dtos.remoteproduction.PlanificationDto;
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxconsultation.model.remoteaction.Planification;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.documents.Category;
+import com.megatim.fdxconsultation.model.documents.Document;
+import com.megatim.fdxconsultation.model.dto.ActionDto;
+import com.megatim.fdxconsultation.model.dto.ActionSlimDto;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.megatim.fdxconsultation.model.dto.CategoryDto;
+import com.megatim.fdxconsultation.model.dto.CategorySlimDto;
+import com.megatim.fdxconsultation.model.dto.CodeStatutHttpDto;
+import com.megatim.fdxconsultation.model.dto.DocumentDto;
+import com.megatim.fdxconsultation.model.dto.FavoriteSearchDto;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.dto.UserSlimDto;
+import com.megatim.fdxconsultation.model.dto.JournalActionUtilisateurDto;
+import com.megatim.fdxconsultation.model.dto.JournalConnexionUtilisateurDto;
+import com.megatim.fdxconsultation.model.dto.MessageSystemeDto;
+import com.megatim.fdxconsultation.model.dto.RoleSlimDto;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationSlimDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordColumnDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomFieldDto;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfiguration;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.model.message.systeme.MessageSysteme;
+import com.megatim.fdxconsultation.model.stats.TableConfiguration;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.TableauBordColumn;
+import com.megatim.fdxconsultation.model.supervision.AgentConfigurationEntity;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import java.util.List;
+import java.util.Set;
+import org.mapstruct.AfterMapping;
+import org.mapstruct.BeforeMapping;
+import org.mapstruct.InjectionStrategy;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.MappingTarget;
+
+/**
+ *
+ * @author bissey
+ */
+@Mapper(componentModel = "cdi", injectionStrategy = InjectionStrategy.FIELD)
+public interface MapStructMapper {
+
+ CategoryDto categoryToCategoryDto(Category category);
+
+ @Mapping(target = "criteria", ignore = true)
+ FavoriteSearchDto favoriteSearchToFavoriteSearchDto(FavoriteSearch favoriteSearch);
+
+ CategorySlimDto categoryToCategorySlimDto(Category category);
+
+ DocumentDto documentToDocumentDto(Document document);
+
+ ParticipantSlimDto partcipantToPartcipantSlimDto(Participant participant);
+
+ ReferentielSlimDto referentielToReferentielSlimDto(Referentiel referentiel);
+
+ ApiTokenDto apiTokenToApiTokenDto(ApiToken apiToken);
+
+ List<ApiTokenDto> apiTokenListToApiTokenDtoList(List<ApiToken> apiTokens);
+
+ UserDto userToUserDto(User user);
+
+ List<UserSlimDto> userListToUserDtoList(List<User> roles);
+
+ UserSlimDto userToUserSlimDto(User user);
+
+ CodeStatutHttpDto codeStatutHttpToCodeStatutHttpDto(CodeStatutHttp codeStatutHttp);
+
+ List<UserSlimDto> userSlimDtos(List<User> users);
+
+ RoleDto roleToRoleDto(Role role);
+
+ List<RoleDto> roleListToRoleDtoList(List<Role> roles);
+
+ RoleSlimDto roleToRoleSlimDto(Role role);
+
+ List<RoleSlimDto> roleSlimDtos(List<Role> roles);
+
+ ActionDto actionToActionDto(Action action);
+
+ ActionSlimDto actionToaActionSlimDto(Action action);
+
+ List<ActionSlimDto> actionSlimDtos(List<Action> actions);
+
+ CustomFieldDto customFieldToCustomFieldDto(CustomField customField);
+
+ List<CustomFieldDto> customFieldListToCustomFieldDtoList(List<CustomField> customFields);
+
+ CustomTypeFichierReportConfiguration customTypeFichierReportConfigurationFromViewToCustomTypeFichierReportConfiguration(CustomTypeFichierReportConfigurationFromView fromView);
+
+ List<CustomTypeFichierReportConfiguration> customTypeFichierReportConfigurationFromViewListToCustomTypeFichierReportConfigurationList(List<CustomTypeFichierReportConfigurationFromView> fromViews);
+
+ TableauBordSlimDto tableauBordToTableauBordSlimDto(TableauBord tableauBord);
+
+ TableConfigurationSlimDto tableConfigurationToTableConfigurationSlimDto(TableConfiguration tableConfiguration);
+
+ TableauBordColumnDto tableauBordColumnToTableauBordColumnDto(TableauBordColumn tableauBordColumn);
+
+ TableauBordColumn tableauBordColumnDtoToTableauBordColumn(TableauBordColumnDto dto);
+
+ Set<TableauBordColumn> setTableauBordColumnDtoToSetTableauBordColumn(Set<TableauBordColumnDto> dtos);
+
+ Set<TableauBordColumnDto> setTableauBordColumnToSetTableauBordColumnDto(Set<TableauBordColumn> tableauBordColumns);
+
+ StandaloneServerStateEntity standaloneServerStateToStandaloneServerStateEntity(StandaloneServerState serverState);
+
+ AgentConfigurationEntity agentConfigurationToAgentConfigurationEntity(AgentConfiguration agent);
+
+ List<AgentConfigurationEntity> agentConfigurationListToAgentConfigurationEntityList(List<AgentConfiguration> agents);
+
+ MessageSystemeDto messageSystemeToMessageSystemeDto(MessageSysteme messageSysteme);
+
+ RoutageSlimDto routageToRoutageSlimDto(Routage routage);
+
+ RoutageDto routageToRoutageDto(Routage routage);
+
+ UserActionLogDto userActionLogToUserActionLogDto(UserActionLog log);
+
+ JournalActionUtilisateurDto journalActionUtilisateurToJournalActionUtilisateurDto(JournalActionUtilisateur log);
+
+ JournalConnexionUtilisateurDto journalConnexionUtilisateurToJournalConnexionUtilisateurDto(JournalConnexionUtilisateur log);
+
+ List<UserActionLogDto> userActionLogListToUserActionLogDtoList(List<UserActionLog> logs);
+
+ List<JournalActionUtilisateurDto> journalActionUtilisateurListToJournalActionUtilisateurgDtoList(List<JournalActionUtilisateur> logs);
+
+ List<JournalConnexionUtilisateurDto> journalConnexionUtilisateurListToJournalConnexionUtilisateurDtoList(List<JournalConnexionUtilisateur> logs);
+
+ ApiUserActionLog userActionLogToApiUserActionLog(UserActionLog log);
+
+ UserActionLogDto apiUserActionLogToUserActionLogDto(ApiUserActionLog log);
+
+ List<UserActionLogDto> apiUserActionLogListToUserActionLogDtoList(List<ApiUserActionLog> logs);
+
+ PlanificationDto planificationToPlanificationDto(Planification plan);
+
+ List<PlanificationDto> planificationListToPlanificationDtoList(List<Planification> liste);
+
+ RemoteConfigurationDto remoteConfigurationToRemoteConfigurationDto(RemoteConfiguration entity);
+
+ List<RemoteConfigurationDto> remoteConfigurationListToRemoteConfigurationDtoList(List<RemoteConfiguration> liste);
+
+ DataProduction commonDataProductionToDataProduction(CommonDataProduction cd);
+
+ DataProduction commonDataProductionDtoToDataProduction(CommonDataProductionDto cd);
+
+ CommonDataProduction dataProductionToCommonDataProduction(DataProduction d);
+
+ List<DataProductionDto> dataProductionListToDataProductionDtoList(List<DataProduction> liste);
+
+ DataProductionDto dataProductionToDataProductionDto(DataProduction d);
+
+ DataProduction dataProductionDtoToDataProduction(DataProductionDto dto);
+
+ @AfterMapping
+ default void setRoutageDtoCode(@MappingTarget RoutageDto routageDto) {
+ routageDto.setCode(routageDto.getTypeFichier().getCode() + "-" + routageDto.getReferentiel().getVersion());
+ }
+
+ @BeforeMapping
+ default void setRoutageSlimDtoCode(Routage routage, @MappingTarget RoutageSlimDto routageDto) {
+ routageDto.setCode(routage.getTypeFichier().getCode() + "-" + routage.getReferentiel().getVersion());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/ApplicationData.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/ApplicationData.java
new file mode 100644
index 0000000..ae57b8a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/ApplicationData.java
@@ -0,0 +1,33 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.model.message.systeme;
+
+import com.megatim.fdxcommons.model.enumeration.Gravite;
+import com.megatim.fdxconsultation.model.dto.AdministrationNumberDto;
+import com.megatim.fdxconsultation.model.dto.InformationGeneraleDto;
+import com.megatim.fdxconsultation.model.dto.MessageSystemeDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ABEGA
+ */
+@Getter
+@Setter
+public class ApplicationData {
+
+ private Gravite gravite = Gravite.INFO;
+ private InformationGeneraleDto informationGeneraleDto;
+ private AdministrationNumberDto administrationNumberDto;
+ private List<UserDto> utlisateursConnectes = new ArrayList<UserDto>();
+ private MessageSystemeDto messageSystemeDto;
+ private String description;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageDecoder.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageDecoder.java
new file mode 100644
index 0000000..c08357d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageDecoder.java
@@ -0,0 +1,39 @@
+/*
+ * 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.model.message.systeme;
+
+import com.google.gson.Gson;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+public class MessageDecoder implements Decoder.Text<ApplicationData> {
+
+ private static Gson gson = new Gson();
+
+ @Override
+ public ApplicationData decode(String s) throws DecodeException {
+ return gson.fromJson(s, ApplicationData.class);
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return (s != null);
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ // Custom initialization logic
+ }
+
+ @Override
+ public void destroy() {
+ // Close resources
+ }
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageEncoder.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageEncoder.java
new file mode 100644
index 0000000..2672614
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageEncoder.java
@@ -0,0 +1,34 @@
+/*
+ * 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.model.message.systeme;
+
+import com.google.gson.Gson;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+public class MessageEncoder implements Encoder.Text<ApplicationData> {
+
+ private static Gson gson = new Gson();
+
+ @Override
+ public String encode(ApplicationData message) throws EncodeException {
+ return gson.toJson(message);
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ // Custom initialization logic
+ }
+
+ @Override
+ public void destroy() {
+ // Close resources
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageSysteme.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageSysteme.java
new file mode 100644
index 0000000..c22b384
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/MessageSysteme.java
@@ -0,0 +1,135 @@
+/*
+ * 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.model.message.systeme;
+
+import com.megatim.fdxcommons.model.enumeration.TypeActionSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeIdMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeMessageSysteme;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.io.Serializable;
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+@Entity(name = "MessageSysteme")
+@Table(name = "FDX_MSG_SYST")
+@Getter
+@Setter
+public class MessageSysteme implements Serializable, Comparable<MessageSysteme> {
+
+ @SequenceGenerator(name = "SEQ_FDX_MSG_SYST",
+ sequenceName = "SEQ_FDX_MSG_SYST",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_FDX_MSG_SYST")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @Column(name = "TYPE_OPERATION")
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Column(name = "TYP_ID_MSG_SYST")
+ @Enumerated(EnumType.STRING)
+ private TypeIdMessageSysteme typeIdMessageSysteme;
+
+ @Column(name = "TYP_MSG_SYST")
+ @Enumerated(EnumType.STRING)
+ private TypeMessageSysteme typeMessageSysteme;
+
+ @Column(name = "TYP_ACTION_SYST")
+ @Enumerated(EnumType.STRING)
+ private TypeActionSysteme typeActionSysteme;
+
+ @Column(name = "CONTENU_MSG")
+ private String contenu;
+
+ @ManyToOne
+ @JoinColumn(name = "ID_UTILISATEUR")
+ private User utilisateur;
+
+ @Column(name = "DATE_CREATION")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateCreation;
+
+ @Column(name = "USER_CREATION")
+ private String utilisateurCreation;
+
+ @Column(name = "DATE_DERN_MOD")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateDerniereModification;
+
+ @Column(name = "USER_UPDATE")
+ private String utilisateurModification;
+
+ @Column(name = "DATE_SUPPR")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date dateSuppression;
+
+ @Column(name = "USER_DELETE")
+ private String utilisateurSuppression;
+
+ public MessageSysteme() {}
+
+ @Override
+ public boolean equals(Object parameter) {
+
+ // Si le parametre est null
+ if(parameter == null) return false;
+
+ // Si le parametre n'est pas de l'instance
+ if(!(parameter instanceof MessageSysteme)) return false;
+
+ // On caste
+ MessageSysteme casted = (MessageSysteme) parameter;
+
+ // Si le code du parametre est vide
+ if(casted.id == null) return false;
+
+ // Si le code du parametre en cours est vide
+ if(id == null) return false;
+
+ // On retourne la comparaison des id
+ return id.equals(casted.id);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(MessageSysteme parameter) {
+
+ // Si le parametre est null
+ if(parameter == null) return -1;
+
+ // Si le code du parametre est vide
+ if(parameter.id == null) return -1;
+
+ // Si le code du parametre en cours est vide
+ if(id == null) return 1;
+
+ // On retourne la comparaison des codes
+ return id.compareTo(parameter.id);
+ }
+}
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserSesionApplication.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserSesionApplication.java
new file mode 100644
index 0000000..dc464fb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserSesionApplication.java
@@ -0,0 +1,100 @@
+/*
+ * 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.model.message.systeme;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+public class UserSesionApplication {
+
+ private static UserSesionApplication userSesion;
+ private static HashMap<String, UserWebSocket> users;
+
+ public static UserSesionApplication getInstance() {
+ if (userSesion == null) {
+ userSesion = new UserSesionApplication();
+ users = new HashMap<String, UserWebSocket>();
+ }
+ return userSesion;
+ }
+
+ public synchronized static HashMap<String, UserWebSocket> getUsers() {
+ return users;
+ }
+
+ public static void setUsers(HashMap<String, UserWebSocket> users) {
+ UserSesionApplication.users = users;
+ }
+
+ public void addSession(User utilidateur, Session session, String type) {
+ this.users.put(session.getId(), new UserWebSocket(session, utilidateur, type));
+ }
+
+ public void removeSession(Session session) {
+ this.users.remove(session.getId());
+ }
+
+ public void send(Session session, ApplicationData message) throws IOException, EncodeException {
+ session.getBasicRemote().sendObject(message);
+ }
+
+ public static boolean siUtilisateurConnecte(User user) {
+ boolean etat = false;
+ UserWebSocket userSession = null;
+ Iterator<String> iterator = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+ while(iterator.hasNext()){
+ userSession = UserSesionApplication.getInstance().getUsers().get(iterator.next());
+ if((userSession != null && userSession.getUtilisateur() != null)
+ && user != null
+ && userSession.getUtilisateur().getId() == user.getId()){
+ etat = true;
+ break;
+ }
+ }
+ return etat;
+ }
+
+ public void removeAllSessionsForUser(User user) {
+
+ //Variables
+ List<String> sessionsId = new ArrayList();
+
+ //On parcourt la liste des sessions
+ UserSesionApplication.getInstance().getUsers().forEach((sessionId, userSession) -> {
+
+ //Si l'utilisateur non null
+ if((userSession != null && userSession.getUtilisateur() != null)
+ && user != null
+ && userSession.getUtilisateur().getId() == user.getId()){
+
+ //On recuoère les sessions de l'utilisateur
+ sessionsId.add(sessionId);
+
+ }
+ });
+
+ //On retire les sessions de l'utilisateur
+ for(String sessionId : sessionsId){
+
+ //On retire la session
+ this.users.remove(sessionId);
+
+ System.out.println("=============================removeAllSessionsForUser=====================================>");
+
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserWebSocket.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserWebSocket.java
new file mode 100644
index 0000000..f0a85bc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/message/systeme/UserWebSocket.java
@@ -0,0 +1,52 @@
+/*
+ * 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.model.message.systeme;
+
+import com.megatim.fdxconsultation.model.administration.User;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author
+ */
+public class UserWebSocket {
+
+ private Session session;
+ private String type;
+ private User utilisateur;
+
+ public UserWebSocket() {}
+
+ public UserWebSocket(Session session, User utilisateur, String type) {
+ this.session = session;
+ this.utilisateur = utilisateur;
+ this.type = type;
+ }
+
+ public Session getSession() {
+ return session;
+ }
+
+ public void setSession(Session session) {
+ this.session = session;
+ }
+
+ public User getUtilisateur() {
+ return utilisateur;
+ }
+
+ public void setUtilisateur(User utilisateur) {
+ this.utilisateur = utilisateur;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ExtensionFichierSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ExtensionFichierSlimResponse.java
new file mode 100644
index 0000000..c8737b2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ExtensionFichierSlimResponse.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.enumeration.TypeExtension;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ExtensionFichierSlimResponse implements Serializable {
+
+ private final ExtensionFichier extensionFichier;
+
+ public ExtensionFichierSlimResponse(ExtensionFichier extensionFichier) {
+ this.extensionFichier = extensionFichier;
+ }
+
+ public String getExtension() {
+ return extensionFichier.getExtension();
+ }
+
+ public String getLibelle() {
+ return extensionFichier.getLibelle();
+ }
+
+ public TypeExtension getTypeExtension() {
+ return extensionFichier.getTypeExtension();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(extensionFichier.getReferentiel());
+ }
+
+ public String getCreateBy() {
+ return extensionFichier.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return extensionFichier.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return extensionFichier.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return extensionFichier.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeNoeudSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeNoeudSlimResponse.java
new file mode 100644
index 0000000..2f8c7e1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeNoeudSlimResponse.java
@@ -0,0 +1,51 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class GroupeNoeudSlimResponse implements Serializable {
+
+ private final GroupeNoeud groupeNoeud;
+
+ public GroupeNoeudSlimResponse(GroupeNoeud groupeNoeud) {
+ this.groupeNoeud = groupeNoeud;
+ }
+
+ public String getCode() {
+ return groupeNoeud.getCode();
+ }
+
+ public String getLibelle() {
+ return groupeNoeud.getLibelle();
+ }
+
+ public String getDescription() {
+ return groupeNoeud.getDescription();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(groupeNoeud.getReferentiel());
+ }
+
+ public String getCreateBy() {
+ return groupeNoeud.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return groupeNoeud.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return groupeNoeud.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return groupeNoeud.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeParticipantSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeParticipantSlimResponse.java
new file mode 100644
index 0000000..43bf623
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/GroupeParticipantSlimResponse.java
@@ -0,0 +1,51 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class GroupeParticipantSlimResponse implements Serializable {
+
+ private final GroupeParticipant groupeParticipant;
+
+ public GroupeParticipantSlimResponse(GroupeParticipant groupeParticipant) {
+ this.groupeParticipant = groupeParticipant;
+ }
+
+ public String getCode() {
+ return groupeParticipant.getCode();
+ }
+
+ public String getLibelle() {
+ return groupeParticipant.getLibelle();
+ }
+
+ public String getDescription() {
+ return groupeParticipant.getDescription();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(groupeParticipant.getReferentiel());
+ }
+
+ public String getCreateBy() {
+ return groupeParticipant.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return groupeParticipant.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return groupeParticipant.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return groupeParticipant.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/NoeudSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/NoeudSlimResponse.java
new file mode 100644
index 0000000..bd2d4f9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/NoeudSlimResponse.java
@@ -0,0 +1,51 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class NoeudSlimResponse implements Serializable {
+
+ private final Noeud noeud;
+
+ public NoeudSlimResponse(Noeud noeud) {
+ this.noeud = noeud;
+ }
+
+ public String getCode() {
+ return noeud.getCode();
+ }
+
+ public String getLibelle() {
+ return noeud.getLibelle();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(noeud.getReferentiel());
+ }
+
+ public ParticipantSlimResponse getParticipant() {
+ return new ParticipantSlimResponse(noeud.getParticipant());
+ }
+
+ public String getCreateBy() {
+ return noeud.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return noeud.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return noeud.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return noeud.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ParticipantSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ParticipantSlimResponse.java
new file mode 100644
index 0000000..7d2fca3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ParticipantSlimResponse.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ParticipantSlimResponse implements Serializable {
+
+ private final Participant participant;
+
+ public ParticipantSlimResponse(Participant participant) {
+ this.participant = participant;
+ }
+
+ public String getCode() {
+ return participant.getCode();
+ }
+
+ public String getLibelle() {
+ return participant.getLibelle();
+ }
+
+ public String getDescription() {
+ return participant.getDescription();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(participant.getReferentiel());
+ }
+
+ public PaysSlimResponse getPays() {
+ return new PaysSlimResponse(participant.getPays());
+ }
+
+ public String getCreateBy() {
+ return participant.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return participant.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return participant.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return participant.getDateMiseAjour();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/PaysSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/PaysSlimResponse.java
new file mode 100644
index 0000000..c21e6dc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/PaysSlimResponse.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class PaysSlimResponse implements Serializable {
+
+ private final Pays pays;
+
+ public PaysSlimResponse(Pays pays) {
+ this.pays = pays;
+ }
+
+ public String getCode() {
+ return pays.getCode();
+ }
+
+ public String getLibelle() {
+ return pays.getLibelle();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(pays.getReferentiel());
+ }
+
+ public String getCreateBy() {
+ return pays.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return pays.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return pays.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return pays.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ReferentielSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ReferentielSlimResponse.java
new file mode 100644
index 0000000..e757c18
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/ReferentielSlimResponse.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ReferentielSlimResponse implements Serializable {
+
+ private final Referentiel referentiel;
+
+ public ReferentielSlimResponse(Referentiel referentiel) {
+ this.referentiel = referentiel;
+ }
+
+ public String getVersion() {
+ return referentiel.getVersion();
+ }
+
+ public String getDescription() {
+ return referentiel.getDescription();
+ }
+
+ public StatutReferentiel getStatutReferentiel() {
+ return referentiel.getStatutReferentiel();
+ }
+
+ public String getCreateBy() {
+ return referentiel.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return referentiel.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return referentiel.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return referentiel.getDateMiseAjour();
+ }
+
+ public LocalDateTime getDateGeneration() {
+ return referentiel.getDateGeneration();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageDetailsResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageDetailsResponse.java
new file mode 100644
index 0000000..b10c458
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageDetailsResponse.java
@@ -0,0 +1,81 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class RoutageDetailsResponse extends RoutageSlimResponse {
+
+ public RoutageDetailsResponse(Routage routage) {
+ super(routage);
+ }
+
+ public Set<NoeudSlimResponse> getNoeudsEnvoi() {
+ return routage
+ .getNoeudsEnvoi()
+ .stream()
+ .map(r -> new NoeudSlimResponse(r))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<GroupeNoeudSlimResponse> getGroupeNoeudsEnvoi() {
+ return routage
+ .getGroupeNoeudsEnvoi()
+ .stream()
+ .map(g -> new GroupeNoeudSlimResponse(g))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<ParticipantSlimResponse> getParticipantsEnvoi() {
+ return routage
+ .getParticipantsEnvoi()
+ .stream()
+ .map(p -> new ParticipantSlimResponse(p))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<GroupeParticipantSlimResponse> getGroupeParticipantsEnvoi() {
+ return routage
+ .getGroupeParticipantsEnvoi()
+ .stream()
+ .map(g -> new GroupeParticipantSlimResponse(g))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<NoeudSlimResponse> getNoeudsReception() {
+ return routage
+ .getNoeudsReception()
+ .stream()
+ .map(r -> new NoeudSlimResponse(r))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<GroupeNoeudSlimResponse> getGroupeNoeudsReception() {
+ return routage
+ .getGroupeNoeudsReception()
+ .stream()
+ .map(g -> new GroupeNoeudSlimResponse(g))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<ParticipantSlimResponse> getParticipantsReception() {
+ return routage
+ .getParticipantsReception()
+ .stream()
+ .map(p -> new ParticipantSlimResponse(p))
+ .collect(Collectors.toSet());
+ }
+
+ public Set<GroupeParticipantSlimResponse> getGroupeParticipantsReception() {
+ return routage
+ .getGroupeParticipantsReception()
+ .stream()
+ .map(g -> new GroupeParticipantSlimResponse(g))
+ .collect(Collectors.toSet());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageSlimResponse.java
new file mode 100644
index 0000000..593c2a5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/RoutageSlimResponse.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class RoutageSlimResponse implements Serializable {
+
+ protected final Routage routage;
+
+ public RoutageSlimResponse(Routage routage) {
+ this.routage = routage;
+ }
+
+ public String getCode() {
+ return routage.getTypeFichier().getCode() + "-" + routage.getReferentiel().getVersion();
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(routage.getReferentiel());
+ }
+
+ public TypeFichierSlimResponse getTypeFichier() {
+ return new TypeFichierSlimResponse(routage.getTypeFichier());
+ }
+
+ public String getCreateBy() {
+ return routage.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return routage.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return routage.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return routage.getDateMiseAjour();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/TypeFichierSlimResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/TypeFichierSlimResponse.java
new file mode 100644
index 0000000..d4ef68b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/referentiel/dtos/TypeFichierSlimResponse.java
@@ -0,0 +1,63 @@
+package com.megatim.fdxconsultation.model.referentiel.dtos;
+
+import com.megatim.fdxcommons.model.enumeration.CategorieFichier;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TypeFichierSlimResponse implements Serializable {
+
+ private final TypeFichier typeFichier;
+
+ public TypeFichierSlimResponse(TypeFichier typeFichier) {
+ this.typeFichier = typeFichier;
+ }
+
+ public String getCode() {
+ return typeFichier.getCode();
+ }
+
+ public String getLibelle() {
+ return typeFichier.getLibelle();
+ }
+
+ public String getDescription() {
+ return typeFichier.getDescription();
+ }
+
+ public ParticipantSlimResponse getParticipant() {
+ return new ParticipantSlimResponse(typeFichier.getParticipant());
+ }
+
+ public ReferentielSlimResponse getReferentiel() {
+ return new ReferentielSlimResponse(typeFichier.getReferentiel());
+ }
+
+ public CategorieFichier getCategorieFichier() {
+ return typeFichier.getCategorieFichier();
+ }
+
+ public ExtensionFichierSlimResponse getExtensionFichier() {
+ return new ExtensionFichierSlimResponse(typeFichier.getExtensionFichier());
+ }
+
+ public String getCreateBy() {
+ return typeFichier.getCreateBy();
+ }
+
+ public String getLastModifiedBy() {
+ return typeFichier.getLastModifiedBy();
+ }
+
+ public LocalDateTime getDateCreation() {
+ return typeFichier.getDateCreation();
+ }
+
+ public LocalDateTime getDateMiseAjour() {
+ return typeFichier.getDateMiseAjour();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/Planification.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/Planification.java
new file mode 100644
index 0000000..597758a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/Planification.java
@@ -0,0 +1,79 @@
+/*
+ * 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.model.remoteaction;
+
+import com.megatim.fdxcommons.model.base.BaseEntity;
+import com.megatim.fdxcommons.model.remotedataproduction.enums.ScheduleAction;
+import com.megatim.fdxcommons.model.remotedataproduction.enums.TypePas;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.validation.constraints.Max;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+public class Planification extends BaseEntity implements Serializable {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String description;
+
+ @ManyToOne
+ private RemoteConfiguration configuration;
+
+ private Boolean executeOnce = false;
+
+ private Boolean active = true;
+
+ private LocalDateTime nextExecution;
+
+ @Enumerated(EnumType.STRING)
+ private ScheduleAction scheduleAction = ScheduleAction.AJOUTER;
+
+ //debut
+ @Max(message = "L'heure de début d'exécution doit être inférieure ou égale à 23", value = 23)
+ private int heureDebutTache = 0;
+ @Max(message = "La minute d'execution doit être inférieure ou égale à 59", value = 59)
+ private int minuteDebutTache = 0;
+ @Max(message = "La Seconde d'execution doit être inférieure ou égale à 59", value = 59)
+ private int secondeDebutTache = 0;
+
+ //fin
+ @Max(message = "L'heure de fin d'exécution doit être inférieure ou égale à 23", value = 23)
+ private int heureFinTache = 0;
+ @Max(message = "La minute de fin d'execution doit être inférieure ou égale à 59", value = 59)
+ private int minuteFinTache = 0;
+ @Max(message = "La seconde de fin d'execution doit être inférieure ou égale à 59", value = 59)
+ private int secondeFinTache = 0;
+
+ //pas
+ private int intervalleTache = 0;
+ @Enumerated(EnumType.STRING)
+ private TypePas typePas = TypePas.MINUTE;
+
+ //les jours
+ private boolean monday;
+ private boolean tuesday;
+ private boolean wednesday;
+ private boolean thursday;
+ private boolean friday;
+ private boolean saturday;
+ private boolean sunday;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/RemoteConfiguration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/RemoteConfiguration.java
new file mode 100644
index 0000000..8080fc0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/remoteaction/RemoteConfiguration.java
@@ -0,0 +1,59 @@
+/*
+ * 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.model.remoteaction;
+
+import com.megatim.fdxcommons.model.base.BaseEntity;
+import com.megatim.fdxcommons.model.enumeration.RemoteTypeAction;
+import com.megatim.fdxcommons.model.remoteaction.RemoteConfigurationId;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.OneToMany;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@IdClass(RemoteConfigurationId.class)
+@Entity
+public class RemoteConfiguration extends BaseEntity implements Serializable {
+
+ @Id
+ @NotEmpty(message = "Le type de fichier est obligatoire")
+ @CriteriaEntitySearch(libelle = "Type de fichier", rang = 5)
+ private String codeTypeFichier;
+
+ @Id
+ @NotEmpty(message = "Le participant est obligatoire")
+ @CriteriaEntitySearch(libelle = "Type de fichier")
+ private String codeParticipant;
+
+ @NotEmpty(message = "L'URL est obligatoire")
+ private String url;
+
+ @NotNull(message = "Le type d'action est obligatoire")
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Type d'action", rang = 7)
+ private RemoteTypeAction remoteTypeAction;//Type d'action à effectuer au niveau du endpoint du participant
+
+ @OneToMany(mappedBy = "configuration", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
+ private Set<Planification> planifications = new HashSet<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApiTokenSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApiTokenSearch.java
new file mode 100644
index 0000000..09d2de0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApiTokenSearch.java
@@ -0,0 +1,13 @@
+/*
+ * 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.model.searchentities;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ApiTokenSearch {
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApplicationSourceSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApplicationSourceSearch.java
new file mode 100644
index 0000000..b11c30a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ApplicationSourceSearch.java
@@ -0,0 +1,21 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class ApplicationSourceSearch {
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.EQUALS)
+ private String libelle;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/CodeStatutHttpSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/CodeStatutHttpSearch.java
new file mode 100644
index 0000000..fd40ed4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/CodeStatutHttpSearch.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class CodeStatutHttpSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.LIKE)
+ private String code;
+
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.LIKE )
+ private String libelle;
+
+ @Search(fieldName = "typeOperation", operateur = SearchAnnotationOperateur.EQUALS )
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ExtensionFichierSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ExtensionFichierSearch.java
new file mode 100644
index 0000000..95f4d87
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ExtensionFichierSearch.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class ExtensionFichierSearch {
+
+ @Search(fieldName = "extension", operateur = SearchAnnotationOperateur.EQUALS)
+ private String extension;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeNoeudSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeNoeudSearch.java
new file mode 100644
index 0000000..4641d7a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeNoeudSearch.java
@@ -0,0 +1,21 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter @Setter
+public class GroupeNoeudSearch {
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String code;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeParticipantSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeParticipantSearch.java
new file mode 100644
index 0000000..4a0c340
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/GroupeParticipantSearch.java
@@ -0,0 +1,23 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class GroupeParticipantSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String code;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalActionUtilisateurSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalActionUtilisateurSearch.java
new file mode 100644
index 0000000..e350873
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalActionUtilisateurSearch.java
@@ -0,0 +1,36 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.Gravite;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class JournalActionUtilisateurSearch {
+
+ @Search(fieldName = "dateCreation", operateur = SearchAnnotationOperateur.GREATER_OR_EQUALS_THAN)
+ private String dateDebut;
+
+ @Search(fieldName = "dateCreation", operateur = SearchAnnotationOperateur.LESS_OR_EQUALS_THAN)
+ private String dateFin;
+
+ @Search(fieldName = "gravite", operateur = SearchAnnotationOperateur.EQUALS)
+ protected Gravite gravite;
+
+ @Search(fieldName = "utilisateur", operateur = SearchAnnotationOperateur.LIKE)
+ protected String utilisateur;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ protected String description;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalConnexionUtilisateurSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalConnexionUtilisateurSearch.java
new file mode 100644
index 0000000..00bb0fa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/JournalConnexionUtilisateurSearch.java
@@ -0,0 +1,36 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.Gravite;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class JournalConnexionUtilisateurSearch {
+
+ @Search(fieldName = "dateCreation", operateur = SearchAnnotationOperateur.GREATER_OR_EQUALS_THAN)
+ private String dateDebut;
+
+ @Search(fieldName = "dateCreation", operateur = SearchAnnotationOperateur.LESS_OR_EQUALS_THAN)
+ private String dateFin;
+
+ @Search(fieldName = "gravite", operateur = SearchAnnotationOperateur.EQUALS)
+ protected Gravite gravite;
+
+ @Search(fieldName = "utilisateur", operateur = SearchAnnotationOperateur.LIKE)
+ protected String utilisateur;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ protected String description;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/NoeudSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/NoeudSearch.java
new file mode 100644
index 0000000..43c89e5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/NoeudSearch.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class NoeudSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String code;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ParticipantSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ParticipantSearch.java
new file mode 100644
index 0000000..e1fd101
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ParticipantSearch.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ParticipantSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.LIKE)
+ private String code;
+
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.LIKE)
+ private String libelle;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/PaysSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/PaysSearch.java
new file mode 100644
index 0000000..c26354d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/PaysSearch.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class PaysSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String code;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ReferentielSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ReferentielSearch.java
new file mode 100644
index 0000000..44cb38d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ReferentielSearch.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.enumeration.StatutReferentiel;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ReferentielSearch {
+
+ @Search(fieldName = "version", operateur = SearchAnnotationOperateur.LIKE)
+ private String version;
+
+ @Search(fieldName = "statutReferentiel", operateur = SearchAnnotationOperateur.EQUALS)
+ private StatutReferentiel statutReferentiel;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoleSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoleSearch.java
new file mode 100644
index 0000000..b573631
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoleSearch.java
@@ -0,0 +1,39 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class RoleSearch {
+
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.LIKE)
+ private String libelle;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE )
+ private String description;
+
+ @Search(fieldName = "admin", operateur = SearchAnnotationOperateur.EQUALS )
+ private Boolean admin = false;
+
+ @Search(fieldName = "superAdmin", operateur = SearchAnnotationOperateur.EQUALS )
+ private Boolean superAdmin = false;
+
+ @Search(fieldName = "megaAdmin", operateur = SearchAnnotationOperateur.EQUALS )
+ private Boolean megaAdmin = false;
+
+ @Search(fieldName = "typeOperation", operateur = SearchAnnotationOperateur.EQUALS )
+ private TypeOperation typeOperation = TypeOperation.AJOUTER;
+
+ @Search(fieldName = "etatOperation", operateur = SearchAnnotationOperateur.EQUALS )
+ private EtatOperation etatOperation = EtatOperation.ACTIF;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoutageSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoutageSearch.java
new file mode 100644
index 0000000..4ee371e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/RoutageSearch.java
@@ -0,0 +1,26 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class RoutageSearch {
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.EQUALS)
+ private String referentielVersion;
+
+ @Search(fieldName = "typeFichier.code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String codeTypeFichier;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/StructureLigneSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/StructureLigneSearch.java
new file mode 100644
index 0000000..6e7898b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/StructureLigneSearch.java
@@ -0,0 +1,22 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class StructureLigneSearch {
+
+ @Search(fieldName = "id", operateur = SearchAnnotationOperateur.EQUALS)
+ private String id;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordGlobalSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordGlobalSearch.java
new file mode 100644
index 0000000..f3544f4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordGlobalSearch.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableauBordGlobalSearch {
+
+ @Search(fieldName = "typeFichier.code", operateur = SearchAnnotationOperateur.LIKE)
+ private String codeTypeFichier;
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.LIKE)
+ private String referentielVersion;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ private String description;
+
+ @Search(fieldName = "typeConfiguration", operateur = SearchAnnotationOperateur.EQUALS)
+ private TypeConfigurationTableauBord typeConfiguration = TypeConfigurationTableauBord.GLOBAL;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSearch.java
new file mode 100644
index 0000000..4beaf25
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSearch.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableauBordSearch {
+
+ @Search(fieldName = "user.userName", operateur = SearchAnnotationOperateur.EQUALS)
+ private String userName;
+
+ @Search(fieldName = "typeFichier.code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String codeTypeFichier;
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.EQUALS)
+ private String referentielVersion;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSpecificSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSpecificSearch.java
new file mode 100644
index 0000000..78da5fb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TableauBordSpecificSearch.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TableauBordSpecificSearch {
+
+ @Search(fieldName = "user.userName", operateur = SearchAnnotationOperateur.EQUALS)
+ private String userName;
+
+ @Search(fieldName = "typeFichier.code", operateur = SearchAnnotationOperateur.LIKE)
+ private String codeTypeFichier;
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.LIKE)
+ private String referentielVersion;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ private String description;
+
+ @Search(fieldName = "typeConfiguration", operateur = SearchAnnotationOperateur.EQUALS)
+ private TypeConfigurationTableauBord typeConfiguration = TypeConfigurationTableauBord.USER_SPECIFIC;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TransfertSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TransfertSearch.java
new file mode 100644
index 0000000..03411af
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TransfertSearch.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class TransfertSearch {
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierReferentielSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierReferentielSearch.java
new file mode 100644
index 0000000..203ac6e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierReferentielSearch.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TypeFichierReferentielSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.LIKE)
+ private String code;
+
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.LIKE)
+ private String libelle;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ private String description;
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.LESS_OR_EQUALS_THAN)
+ private String referentiel;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierSearch.java
new file mode 100644
index 0000000..de473b5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/TypeFichierSearch.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class TypeFichierSearch {
+
+ @Search(fieldName = "code", operateur = SearchAnnotationOperateur.LIKE)
+ private String code;
+
+ @Search(fieldName = "libelle", operateur = SearchAnnotationOperateur.LIKE)
+ private String libelle;
+
+ @Search(fieldName = "description", operateur = SearchAnnotationOperateur.LIKE)
+ private String description;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/UserSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/UserSearch.java
new file mode 100644
index 0000000..24e2d8e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/UserSearch.java
@@ -0,0 +1,19 @@
+package com.megatim.fdxconsultation.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class UserSearch {
+
+ @Search(fieldName = "userName", operateur = SearchAnnotationOperateur.EQUALS)
+ private String userName;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierConfigurationSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierConfigurationSearch.java
new file mode 100644
index 0000000..e067659
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierConfigurationSearch.java
@@ -0,0 +1,26 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.EtatIntegration;
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ValidateurFichierConfigurationSearch {
+
+ @Search(fieldName = "referentiel.version", operateur = SearchAnnotationOperateur.EQUALS)
+ private String referentielVersion;
+
+ @Search(fieldName = "typeFichier.code", operateur = SearchAnnotationOperateur.EQUALS)
+ private String codeTypeFichier;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierSearch.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierSearch.java
new file mode 100644
index 0000000..b1595bf
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/searchentities/ValidateurFichierSearch.java
@@ -0,0 +1,23 @@
+/*
+ * 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.model.searchentities;
+
+import com.megatim.fdxcommons.model.enumeration.SearchAnnotationOperateur;
+import com.megatim.fdxcommons.model.search.Search;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+public class ValidateurFichierSearch {
+
+ @Search(fieldName = "id", operateur = SearchAnnotationOperateur.EQUALS)
+ private String id;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/settings/DisplayOptions.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/settings/DisplayOptions.java
new file mode 100644
index 0000000..3fd9b06
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/settings/DisplayOptions.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.model.settings;
+
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Setter
+@Getter
+@Entity
+@Table(name = "DISPLAY_OPTIONS")
+public class DisplayOptions extends BaseEntity implements Serializable {
+
+ private int auditAPI;
+ private int statParticipantAPI;
+ private int statPathAPI;
+ private int tableauBordAPI;
+
+ private int suiviEchangeStandalone;
+ private int tableauBordStandalone;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/CriteriaEntityPersisted.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/CriteriaEntityPersisted.java
new file mode 100644
index 0000000..794fb94
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/CriteriaEntityPersisted.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.model.stats;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class CriteriaEntityPersisted extends BaseEntity implements Serializable {
+
+ private String nomColonne;
+
+ private Number criteriaNumericValue;
+
+ private LocalDateTime criteriaDateValue;
+
+ private String criteriaStringValue;
+
+ private Number criteriaNumericLowerBound;
+
+ private LocalDateTime criteriaDateLowerBound;
+
+ private String criteriaStringLowerBound;
+
+ private Number criteriaNumericUpperBound;
+
+ private LocalDateTime criteriaDateUpperBound;
+
+ private String criteriaStringUpperBound;
+
+ @ElementCollection(targetClass = Number.class, fetch = FetchType.EAGER)
+ private Set<Number> criteriaNumericListValue = new HashSet<>();
+
+ @ElementCollection(targetClass = LocalDateTime.class, fetch = FetchType.EAGER)
+ private Set<LocalDateTime> criteriaDateListValue = new HashSet<>();
+
+ @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER)
+ private Set<String> criteriaStringListValue = new HashSet<>();
+
+ @Enumerated(EnumType.STRING)
+ private Operateur operateur;
+
+ @Enumerated(EnumType.STRING)
+ private CriteriaLogicConnector criteriaLogicConnector;
+
+ @OneToOne(mappedBy = "criterion")
+ private TableConfiguration tableConfiguration;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ private CriteriaEntityPersisted parent;
+
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.LAZY)
+ private List<CriteriaEntityPersisted> subCriterias = new ArrayList<>();
+
+ @JsonIgnore
+ public List<CriteriaEntityPersisted> getSubCriterias() {
+ return subCriterias;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/FonctionAggregationCriterion.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/FonctionAggregationCriterion.java
new file mode 100644
index 0000000..9f53335
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/FonctionAggregationCriterion.java
@@ -0,0 +1,53 @@
+/*
+ * 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.model.stats;
+
+import com.megatim.fdxconsultation.model.enums.FonctionAggregationOperateur;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class FonctionAggregationCriterion implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_FONCT_AGGR_CRITERIA",
+ sequenceName = "SEQ_FONCT_AGGR_CRITERIA",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_FONCT_AGGR_CRITERIA")
+ private Long id;
+
+ @NotNull(message = "L'opérateur du critère sur la fonction d'aggrégation est obligatoire")
+ @Enumerated(EnumType.STRING)
+ private FonctionAggregationOperateur operateur;
+
+ private Number criteriaValue;
+
+ private Number criteriaLowerBound;
+
+ private Number criteriaNumericUpperBound;
+
+ @ElementCollection(targetClass = Number.class, fetch = FetchType.EAGER)
+ private Set<Number> criteriaNumericListValue = new HashSet<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableConfiguration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableConfiguration.java
new file mode 100644
index 0000000..791030b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableConfiguration.java
@@ -0,0 +1,101 @@
+package com.megatim.fdxconsultation.model.stats;
+
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+public class TableConfiguration extends BaseEntity implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_TABLE_CONF",
+ sequenceName = "SEQ_TABLE_CONF",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABLE_CONF")
+ private Long id;
+
+ @NotEmpty(message = "Le libellé est obligatoire")
+ private String libelle;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "targeted_column_id", referencedColumnName = "id")
+ private TableauBordColumn targetedColumn;
+
+ @OneToMany(mappedBy = "tableConfiguration", cascade = CascadeType.ALL)
+ private Set<TableauBordColumn> groupingColumns = new HashSet<>();
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "La fonction d'aggrégation est obligatoire")
+ private FonctionAggregation fonctionAggregation;
+
+ @Enumerated(EnumType.STRING)
+ @CriteriaEntitySearch(libelle = "Type de Résultat")
+ private TypeResultatConfiguration typeResultatConfiguration;
+
+ @ManyToOne
+ @JoinColumn(name = "tableaubord_id", referencedColumnName = "id")
+ private TableauBord tableauBord;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "criterion_id", referencedColumnName = "id")
+ private CriteriaEntityPersisted criterion;
+
+ private String color = "#527ccc";
+
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
+ @JoinColumn(name = "fonctionAggCriterion_id", referencedColumnName = "id")
+ private FonctionAggregationCriterion fonctionAggregationCriterion;
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 71 * hash + Objects.hashCode(this.libelle);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final TableConfiguration other = (TableConfiguration) obj;
+ return Objects.equals(this.libelle, other.libelle);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBord.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBord.java
new file mode 100644
index 0000000..eeefcd1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBord.java
@@ -0,0 +1,81 @@
+package com.megatim.fdxconsultation.model.stats;
+
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import com.megatim.fdxcommons.model.search.CriteriaEntitySearch;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+public class TableauBord extends BaseEntity implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_TABLEAU_BORD",
+ sequenceName = "SEQ_TABLEAU_BORD",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABLEAU_BORD")
+ private Long id;
+
+ @ManyToOne
+ @CriteriaEntitySearch(libelle = "Utilisateur", fieldName = "user.userName")
+ private User user;
+
+ @ManyToOne
+ @NotNull(message = "Le type de fichier associé au tableau de bord est obligatoire")
+ @CriteriaEntitySearch(libelle = "TypeFichier", fieldName = "typeFichier.code")
+ private TypeFichier typeFichier;
+
+ @ManyToOne
+ @NotNull(message = "Le référentiel associé au tableau de bord est obligatoire")
+ @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version")
+ private Referentiel referentiel;
+
+ @NotEmpty(message = "La description du tableau de bord de bord est obligatoire")
+ private String description;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le type de configuration est obligatoire")
+ @CriteriaEntitySearch(libelle = "Type de Configuration")
+ private TypeConfigurationTableauBord typeConfiguration = TypeConfigurationTableauBord.USER_SPECIFIC;
+
+ @OneToMany(mappedBy = "tableauBord", cascade = CascadeType.ALL, orphanRemoval = true)
+ private Set<TableConfiguration> tableConfigurations = new HashSet<>();
+
+ public void addTableConfiguration(TableConfiguration tableConfiguration) {
+ tableConfigurations.add(tableConfiguration);
+ tableConfiguration.setTableauBord(this);
+ }
+
+ public void removeTableConfiguration(TableConfiguration tableConfiguration) {
+ tableConfigurations.remove(tableConfiguration);
+ tableConfiguration.setTableauBord(null);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBordColumn.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBordColumn.java
new file mode 100644
index 0000000..a4b2a36
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/TableauBordColumn.java
@@ -0,0 +1,76 @@
+package com.megatim.fdxconsultation.model.stats;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import com.megatim.fdxconsultation.model.base.BaseEntity;
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+public class TableauBordColumn extends BaseEntity implements Serializable {
+
+ @Id
+ @SequenceGenerator(name = "SEQ_TABLEAU_BORD_COLUMN",
+ sequenceName = "SEQ_TABLEAU_BORD_COLUMN",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABLEAU_BORD_COLUMN")
+ private Long id;
+
+ @NotEmpty(message = "Le nom de la colonne est obligatoire")
+ private String name;
+
+ @NotNull(message = "Le type de données est obligatoire")
+ @Enumerated(EnumType.STRING)
+ private TypeDonnee typeDonnee;
+
+ @ManyToOne
+ private TableConfiguration tableConfiguration;
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = 37 * hash + Objects.hashCode(this.name);
+ hash = 37 * hash + Objects.hashCode(this.typeDonnee);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final TableauBordColumn other = (TableauBordColumn) obj;
+ if (!Objects.equals(this.name, other.name)) {
+ return false;
+ }
+ return this.typeDonnee == other.typeDonnee;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableConfigurationResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableConfigurationResponse.java
new file mode 100644
index 0000000..a108a23
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableConfigurationResponse.java
@@ -0,0 +1,43 @@
+package com.megatim.fdxconsultation.model.stats.dto;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.enumeration.FonctionAggregation;
+import com.megatim.fdxconsultation.model.enums.TypeResultatConfiguration;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import lombok.Getter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+public class TableConfigurationResponse implements Serializable {
+
+ private final String libelle;
+ private final FonctionAggregation fonctionAggregation;
+ private final TypeResultatConfiguration typeResultatConfiguration;
+ private final TableauBordColumnResponse targetedColumn;
+ private final Set<TableauBordColumnResponse> groupingColumns = new HashSet<>();
+ private final CriteriaEntityFromView criterion;
+ private final String color;
+
+ public TableConfigurationResponse(
+ String libelle,
+ FonctionAggregation fonctionAggregation,
+ TypeResultatConfiguration typeResultatConfiguration,
+ TableauBordColumnResponse targetedColumn,
+ Set<TableauBordColumnResponse> groupingColumns,
+ CriteriaEntityFromView criterion,
+ String color
+ ) {
+ this.libelle = libelle;
+ this.fonctionAggregation = fonctionAggregation;
+ this.typeResultatConfiguration = typeResultatConfiguration;
+ this.targetedColumn = targetedColumn;
+ this.criterion = criterion;
+ this.color = color;
+ this.groupingColumns.addAll(groupingColumns);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordColumnResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordColumnResponse.java
new file mode 100644
index 0000000..28e6b59
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordColumnResponse.java
@@ -0,0 +1,21 @@
+package com.megatim.fdxconsultation.model.stats.dto;
+
+import com.megatim.fdxcommons.model.enumeration.TypeDonnee;
+import java.io.Serializable;
+import lombok.Getter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+public class TableauBordColumnResponse implements Serializable {
+
+ private final String name;
+ private final TypeDonnee typeDonnee;
+
+ public TableauBordColumnResponse(String name, TypeDonnee typeDonnee) {
+ this.name = name;
+ this.typeDonnee = typeDonnee;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordFlatResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordFlatResponse.java
new file mode 100644
index 0000000..ffd0156
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordFlatResponse.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.model.stats.dto;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import java.io.Serializable;
+import lombok.Getter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+public class TableauBordFlatResponse implements Serializable {
+
+ private final String description;
+ private final TypeFichierSlimDto typeFichier;
+ private final ReferentielSlimDto referentiel;
+ private final TypeConfigurationTableauBord typeConfiguration;
+
+ public TableauBordFlatResponse(
+ String description,
+ TypeFichierSlimDto typeFichier,
+ ReferentielSlimDto referentiel,
+ TypeConfigurationTableauBord typeConfiguration) {
+
+ this.description = description;
+ this.typeFichier = typeFichier;
+ this.referentiel = referentiel;
+ this.typeConfiguration = typeConfiguration;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordRequest.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordRequest.java
new file mode 100644
index 0000000..b118919
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordRequest.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.model.stats.dto;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.dto.stats.TableConfigurationDto;
+import java.util.HashSet;
+import java.util.Set;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class TableauBordRequest {
+
+ private Long id;
+
+ @NotNull(message = "La description est obligatoire")
+ private String description;
+
+ @NotNull(message = "La description est obligatoire")
+ private TypeFichier typeFichier;
+
+ @NotNull(message = "Le référentiel est obligatoire")
+ private Referentiel referentiel;
+
+ private Set<TableConfigurationDto> tableConfigurations = new HashSet<>();
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordResponse.java
new file mode 100644
index 0000000..da4c81a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/stats/dto/TableauBordResponse.java
@@ -0,0 +1,36 @@
+package com.megatim.fdxconsultation.model.stats.dto;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import java.io.Serializable;
+import java.util.Set;
+import lombok.Getter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+public class TableauBordResponse implements Serializable {
+
+ private final String description;
+ private final TypeFichierSlimDto typeFichier;
+ private final ReferentielSlimDto referentiel;
+ private TypeConfigurationTableauBord typeConfiguration;
+ private final Set<TableConfigurationResponse> tableConfigurations;
+
+ public TableauBordResponse(
+ String description,
+ TypeFichierSlimDto typeFichier,
+ ReferentielSlimDto referentiel,
+ TypeConfigurationTableauBord typeConfiguration,
+ Set<TableConfigurationResponse> tableConfigurations
+ ) {
+ this.description = description;
+ this.typeFichier = typeFichier;
+ this.referentiel = referentiel;
+ this.tableConfigurations = tableConfigurations;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/AgentConfigurationEntity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/AgentConfigurationEntity.java
new file mode 100644
index 0000000..8d404e9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/AgentConfigurationEntity.java
@@ -0,0 +1,55 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class AgentConfigurationEntity implements Serializable {
+
+ @SequenceGenerator(name = "SEQ_AGENT_CONFIGURATION",
+ sequenceName = "SEQ_AGENT_CONFIGURATION",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_AGENT_CONFIGURATION")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @NotEmpty(message = "Le code de l'agent est obligatoire")
+ private String agentCode;
+
+ @NotEmpty(message = "L'adresse IP de l'agent est obligatoire")
+ private String agentAddress;
+
+ @NotEmpty(message = "L'adresse MAC de l'agent est obligatoire")
+ private String agentMAC;
+
+ private boolean statut;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le statut de la configuration est obligatoire")
+ private StatutConfiguration statutConfiguration;
+
+ @JsonIgnore
+ @ManyToOne
+ private StandaloneServerStateEntity standaloneServerState;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/EtatTransfert.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/EtatTransfert.java
new file mode 100644
index 0000000..3f7e29e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/EtatTransfert.java
@@ -0,0 +1,82 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public enum EtatTransfert {
+ //ETAT D'INTEGRATION
+ EN_ATTENTE_INTEGRATION("EN ATTENTE INTEGRATION"),
+
+ //PHASE DE PREPARATION DU TRANSFERT
+ EN_ATTENTE_PREPARATION("EN ATTENTE DE PREPARATION"),
+ EN_COURS_DE_PREPARATION("EN COURS DE PREPARATION"),
+ ECHEC_NOMENCLATURE("ECHEC DE NOMENCLATURE DE FICHIER"),
+ ECHEC_CONTENU("ECHEC DE VALIDATION DE CONTENU DU FICHIER"),
+
+ //PHASE DE CALCUL DE L'EMPREINTE
+ EN_ATTENTE_VALIDATION_EMPREINTE("EN ATTENTE DE VALIDATION DE L'EMPREINTE"),
+ EN_ATTENTE_RECEPTION_EMPREINTE("EN ATTENTE DE RECEPTION DE L'EMPREINTE"),
+ FILE_NOT_FOUND("FILE NOT FOUND"),
+ FILE_EXCEPTION("FILE EXCEPTION"),
+ ECHEC_EMPREINTE("ECHEC DE L'EMPREINTE"),
+ ATTENTE_ROUTAGE("ATTENTE ROUTAGE"),
+
+ //PHASE DE TRANSMISSION DES TRANSFERTS VALIDES
+ EN_ATTENTE("EN ATTENTE"),
+ EN_COURS("EN COURS"),
+ TERMINE("TERMINE"),
+ ECHOUE("ECHOUE");
+
+ private final String value;
+
+ private EtatTransfert(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ public static EtatTransfert fromValeur(String value) {
+ switch (value) {
+ //PREPARATION
+ case "EN ATTENTE DE PREPARATION":
+ return EtatTransfert.EN_ATTENTE_PREPARATION;
+ case "EN COURS DE PREPARATION":
+ return EtatTransfert.EN_COURS_DE_PREPARATION;
+ case "ECHEC DE NOMENCLATURE DE FICHIER":
+ return EtatTransfert.ECHEC_NOMENCLATURE;
+ case "ECHEC DE VALIDATION DE CONTENU DU FICHIER":
+ return EtatTransfert.ECHEC_CONTENU;
+
+ //CALCUL DE L'EMPREINTE
+ case "EN ATTENTE DE VALIDATION DE L'EMPREINTE":
+ return EtatTransfert.EN_ATTENTE_VALIDATION_EMPREINTE;
+ case "EN ATTENTE DE RECEPTION DE L'EMPREINTE":
+ return EtatTransfert.EN_ATTENTE_RECEPTION_EMPREINTE;
+ case "ECHEC DE L'EMPREINTE":
+ return EtatTransfert.ECHEC_EMPREINTE;
+
+ //TRANSMISSION
+ case "EN ATTENTE":
+ return EtatTransfert.EN_ATTENTE;
+ case "EN COURS":
+ return EtatTransfert.EN_COURS;
+ case "TERMINE":
+ return EtatTransfert.TERMINE;
+ case "ECHOUE":
+ return EtatTransfert.ECHOUE;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SensTransfert.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SensTransfert.java
new file mode 100644
index 0000000..e44c388
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SensTransfert.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public enum SensTransfert {
+
+ ENVOI("ENVOI"),
+ RECEPTION("RECEPTION");
+
+ private final String value;
+
+ private SensTransfert(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ public static SensTransfert fromValeur(String value) {
+ switch (value) {
+ case "ENVOI":
+ return SensTransfert.ENVOI;
+ case "RECEPTION":
+ return SensTransfert.RECEPTION;
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StandaloneServerStateEntity.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StandaloneServerStateEntity.java
new file mode 100644
index 0000000..6fd6e28
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StandaloneServerStateEntity.java
@@ -0,0 +1,73 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.SequenceGenerator;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author ASUS
+ */
+@Getter
+@Setter
+@Entity
+public class StandaloneServerStateEntity implements Serializable {
+
+ @SequenceGenerator(name = "SEQ_STANDALONE_SERVER_STATE",
+ sequenceName = "SEQ_STANDALONE_SERVER_STATE",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_STANDALONE_SERVER_STATE")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ @NotEmpty(message = "Le référentiel est obligatoire")
+ private String currentReferential;
+
+ //Configuration serveur
+ private String serverAddress;
+ private int closingDelay;
+
+ @ElementCollection(targetClass = Integer.class, fetch = FetchType.EAGER)
+ private List<Integer> portNumbers;
+
+ private String integrationPath;
+ private String referentialIntegrationPath;
+ private String fileIntegrationPath;
+
+ //Option d'affichage
+ private int transfertDisplayOptions;
+ private int logDisplayOptions;
+
+ //Répertoires de BAL
+ private String inDir;
+ private String outDir;
+ private String errDir;
+ private String tmpDir;
+
+ @Enumerated(EnumType.STRING)
+ @NotNull(message = "Le statut de la configuration est obligatoire")
+ private StatutConfiguration statutConfiguration;
+
+ //Configurations des agents
+ @OneToMany(cascade = CascadeType.ALL, mappedBy = "standaloneServerState")
+ private Set<AgentConfigurationEntity> agentConfigurations = new HashSet<>();
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StatutConfiguration.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StatutConfiguration.java
new file mode 100644
index 0000000..f4b4faa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/StatutConfiguration.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.fdxconsultation.model.supervision;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum StatutConfiguration {
+ ARCHIVE, EN_COURS;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SupervisionData.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SupervisionData.java
new file mode 100644
index 0000000..bbdf85f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/SupervisionData.java
@@ -0,0 +1,17 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class SupervisionData {
+
+ private List<Transfert> transferts;
+ private StandaloneServerStateEntity standaloneServerState;
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/Transfert.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/Transfert.java
new file mode 100644
index 0000000..0ccd64a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/Transfert.java
@@ -0,0 +1,90 @@
+package com.megatim.fdxconsultation.model.supervision;
+
+import com.megatim.fdxcommons.model.referentiel.LocalDateTimeAdapter;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import lombok.Data;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Data
+@Entity
+public class Transfert implements Serializable {
+
+ @SequenceGenerator(name = "TRANSFERT_TOKEN",
+ sequenceName = "TRANSFERT_TOKEN",
+ allocationSize = 1,
+ initialValue = 1)
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRANSFERT_TOKEN")
+ @Column(name = "ID")
+ @Id
+ private Long id;
+
+ private String codeAgent;
+
+ private String codeAgentRecepteur;
+
+ @Enumerated(EnumType.STRING)
+ private SensTransfert sensTransfert;
+
+ private String nomFichier;
+
+ private String typeFichier;
+
+ private double taille;
+
+ private double sended;
+
+ @Enumerated(EnumType.STRING)
+ private EtatTransfert etatTransfert;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateCreation;
+
+ private LocalDateTime dateDebut;
+
+ @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
+ private LocalDateTime dateFin;
+
+ public Transfert() {
+ }
+
+ public Transfert(
+ String codeAgent,
+ String codeAgentRecepteur,
+ SensTransfert sensTransfert,
+ EtatTransfert etatTransfert,
+ String nomFichier,
+ String typeFichier,
+ double taille,
+ double sended,
+ LocalDateTime dateCreation,
+ LocalDateTime dateDebut,
+ LocalDateTime dateFin
+ ) {
+
+ this.codeAgent = codeAgent;
+ this.codeAgentRecepteur = codeAgentRecepteur;
+ this.sensTransfert = sensTransfert;
+ this.etatTransfert = etatTransfert;
+ this.nomFichier = nomFichier;
+ this.typeFichier = typeFichier;
+ this.taille = taille;
+ this.sended = sended;
+ this.dateCreation = dateCreation;
+ this.dateDebut = dateDebut;
+ this.dateFin = dateFin;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardRequest.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardRequest.java
new file mode 100644
index 0000000..c1e3e64
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardRequest.java
@@ -0,0 +1,20 @@
+package com.megatim.fdxconsultation.model.supervision.dto;
+
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class StandaloneDashboardRequest {
+
+ private LocalDateTime dateDebut;
+ private LocalDateTime dateFin;
+ private SensTransfert sens;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardResponse.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardResponse.java
new file mode 100644
index 0000000..4a39dc4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/StandaloneDashboardResponse.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.model.supervision.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class StandaloneDashboardResponse {
+
+ private long totalTransfert;
+ private long transfertReussie;
+ private long transfertAttente;
+ private long totalTransfertEchec;
+ private long totalTransfertManuel;
+ private long totalTransfertAutomatique;
+ private double tailleTotale;
+ private double tailleMoyenne;
+ private double vitesseMoyenne;
+ private long nombreTypeFichier;
+
+}
diff --git a/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/SupervisionFilterModalFormRequest.java b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/SupervisionFilterModalFormRequest.java
new file mode 100644
index 0000000..bf495d3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-model/src/main/java/com/megatim/fdxconsultation/model/supervision/dto/SupervisionFilterModalFormRequest.java
@@ -0,0 +1,25 @@
+package com.megatim.fdxconsultation.model.supervision.dto;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.model.supervision.EtatTransfert;
+import com.megatim.fdxconsultation.model.supervision.SensTransfert;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Getter
+@Setter
+public class SupervisionFilterModalFormRequest {
+
+ private String nomFichier;
+ private TypeFichier typeFichier;
+ private LocalDateTime dateDebut;
+ private LocalDateTime dateFin;
+ private SensTransfert sensTransfert;
+ private EtatTransfert etatTransfert;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/.gitignore b/fdx-consultation/fdxconsultation-reporting/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-reporting/nb-configuration.xml b/fdx-consultation/fdxconsultation-reporting/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-reporting/pom.xml b/fdx-consultation/fdxconsultation-reporting/pom.xml
new file mode 100644
index 0000000..0fc26b9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/pom.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.reporting</groupId>
+ <artifactId>fdxconsultation-reporting</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <jakartaee>8.0</jakartaee>
+ <version.lombok>1.18.18</version.lombok>
+ <version.mapstruct>1.4.2.Final</version.mapstruct>
+ <version.mapstruct-lombok>0.2.0</version.mapstruct-lombok>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ <optional>true</optional>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct</artifactId>
+ <version>${version.mapstruct}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <!-- ... -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>${version.lombok}</version>
+ </path>
+ <path>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct-processor</artifactId>
+ <version>${version.mapstruct}</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok-mapstruct-binding</artifactId>
+ <version>${version.mapstruct-lombok}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <name>fdxconsultation-reporting</name>
+
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalActionUtilisateurReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalActionUtilisateurReporting.java
new file mode 100644
index 0000000..e10066d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalActionUtilisateurReporting.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxconsultation.reporting.model.administration;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+public class JournalActionUtilisateurReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Description", position = 2, width = 60)
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String message;
+
+ @ExportToExcel(entete = "Utilisateur", position = 5, width = 60)
+ @PrintColumn(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ @ExportToExcel(entete = "Date et heure", position = 1, width = 60)
+ @PrintColumn(libelle = "Date et heure", rang = 1)
+ private String dateAction;
+
+ @ExportToExcel(entete = "Adresse IP", position = 4, width = 60)
+ @PrintColumn(libelle = "Adresse IP", rang = 4)
+ private String ipAddress;
+
+ private Integer status;
+
+ @ExportToExcel(entete = "Navigateur", position = 3, width = 60)
+ @PrintColumn(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ private String relativePath;
+ private String httpMethod;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalConnexionUtilisateurReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalConnexionUtilisateurReporting.java
new file mode 100644
index 0000000..206641c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/JournalConnexionUtilisateurReporting.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxconsultation.reporting.model.administration;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+public class JournalConnexionUtilisateurReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Description", position = 2, width = 60)
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String message;
+
+ private String userName;
+
+ @ExportToExcel(entete = "Date et heure", position = 1, width = 60)
+ @PrintColumn(libelle = "Date et heure", rang = 1)
+ private String dateAction;
+
+ @ExportToExcel(entete = "Adresse IP", position = 4, width = 60)
+ @PrintColumn(libelle = "Adresse IP", rang = 4)
+ private String ipAddress;
+
+ private Integer status;
+
+ @ExportToExcel(entete = "Navigateur", position = 3, width = 60)
+ @PrintColumn(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ private String relativePath;
+
+ private String httpMethod;
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/RoleReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/RoleReporting.java
new file mode 100644
index 0000000..2d643df
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/RoleReporting.java
@@ -0,0 +1,75 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.administration;
+
+
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import java.util.Date;
+import java.util.List;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class RoleReporting {
+
+ private Long id;
+
+ protected String idGenerer;
+
+ @ExportToExcel(entete = "Libellé", position = 1, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 1)
+ private String libelle;
+
+ @ExportToExcel(entete = "Description", position = 2, width = 60)
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String description;
+
+ private boolean admin;
+
+ private boolean superAdmin;
+
+ private boolean megaAdmin;
+
+ private String typeOperation;
+
+ @ExportToExcel(entete = "Etat", position = 3, width = 60)
+ @PrintColumn(libelle = "Etat", rang = 3)
+ private String etatOperation;
+
+ @ExportToExcel(entete = "Nbre utilisateur(s)", position = 4, width = 60)
+ @PrintColumn(libelle = "Nbre utilisateur(s)", rang = 4)
+ private int nbreUtilisateur;
+
+ @ExportToExcel(entete = "Date création", position = 5, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 5)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 6, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 6)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 7, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 7)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 8, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 8)
+ private String utilisateurModification;
+
+ private String dateSuppression;
+
+ private String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/UserReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/UserReporting.java
new file mode 100644
index 0000000..9c0964c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/administration/UserReporting.java
@@ -0,0 +1,74 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.administration;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class UserReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Nom utilisateur", position = 3, width = 60)
+ @PrintColumn(libelle = "Nom utilisateur", rang = 3)
+ private String userName;
+
+ @ExportToExcel(entete = "Prénom (s)", position = 2, width = 60)
+ @PrintColumn(libelle = "Prénom (s)", rang = 2)
+ private String firstName;
+
+ @ExportToExcel(entete = "Nom (s)", position = 1, width = 60)
+ @PrintColumn(libelle = "Nom (s)", rang = 1)
+ private String lastName;
+
+ private int expirationDelay;
+
+ private int alertDelay;
+
+ private int attempsNumber;
+
+ private int attemps;
+
+ private boolean locked;
+
+ private boolean active;
+
+ private boolean connected;
+
+ @ExportToExcel(entete = "Statut", position = 4, width = 60)
+ @PrintColumn(libelle = "Statut", rang = 4)
+ private String etatOperation;
+
+ @ExportToExcel(entete = "Groupe utilisateur", position = 5, width = 60)
+ @PrintColumn(libelle = "Groupe utilisateur", rang = 5)
+ private String role;
+
+ @ExportToExcel(entete = "Date création", position = 6, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 6)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 7, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 7)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 8, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 8)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 9, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 9)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/api/token/ApiTokenReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/api/token/ApiTokenReporting.java
new file mode 100644
index 0000000..d2042ec
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/api/token/ApiTokenReporting.java
@@ -0,0 +1,53 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.api.token;
+
+
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class ApiTokenReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Participant", position = 1, width = 60)
+ @PrintColumn(libelle = "Participant", rang = 1)
+ private String participant;
+
+ @ExportToExcel(entete = "Statut", position = 1, width = 60)
+ @PrintColumn(libelle = "Statut", rang = 2)
+ private String apiTokenStatut;
+
+ @ExportToExcel(entete = "Date première génération", position = 3, width = 60)
+ @PrintColumn(libelle = "Date première génération", rang = 3)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Généré par", position = 4, width = 60)
+ @PrintColumn(libelle = "Généré par", rang = 4)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date dernière regén.", position = 5, width = 60)
+ @PrintColumn(libelle = "Date dernière regén.", rang = 5)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Regénéré par", position = 6, width = 60)
+ @PrintColumn(libelle = "Regénéré par", rang = 6)
+ private String utilisateurModification;
+
+ private String dateSuppression;
+
+ private String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/configuration/CodeStatutHttpReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/configuration/CodeStatutHttpReporting.java
new file mode 100644
index 0000000..96d3c03
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/configuration/CodeStatutHttpReporting.java
@@ -0,0 +1,41 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class CodeStatutHttpReporting {
+
+ private Long id;
+
+ protected String idGenerer;
+
+ private String code;
+
+ private String libelle;
+
+ private String typeOperation;
+
+ private String dateCreation;
+
+ private String utilisateurCreation;
+
+ private String dateDerniereModification;
+
+ private String utilisateurModification;
+
+ private String dateSuppression;
+
+ private String utilisateurSuppression;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/log/ApiUserActionLogReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/log/ApiUserActionLogReporting.java
new file mode 100644
index 0000000..606e86f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/log/ApiUserActionLogReporting.java
@@ -0,0 +1,43 @@
+package com.megatim.fdxconsultation.reporting.model.log;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author DYNABOOK
+ */
+@Getter
+@Setter
+public class ApiUserActionLogReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Description", position = 2, width = 60)
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String message;
+
+ @ExportToExcel(entete = "Utilisateur", position = 5, width = 60)
+ @PrintColumn(libelle = "Utilisateur", rang = 5)
+ private String userName;
+
+ @ExportToExcel(entete = "Date et heure", position = 1, width = 60)
+ @PrintColumn(libelle = "Date et heure", rang = 1)
+ private String dateAction;
+
+ @ExportToExcel(entete = "Adresse IP", position = 4, width = 60)
+ @PrintColumn(libelle = "Adresse IP", rang = 4)
+ private String ipAddress;
+
+ private Integer status;
+
+ @ExportToExcel(entete = "Navigateur", position = 3, width = 60)
+ @PrintColumn(libelle = "Navigateur", rang = 3)
+ private String userAgent;
+
+ private String relativePath;
+ private String httpMethod;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ExtensionFichierReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ExtensionFichierReporting.java
new file mode 100644
index 0000000..4472931
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ExtensionFichierReporting.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class ExtensionFichierReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String extension;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Type extension", position = 3, width = 60)
+ @PrintColumn(libelle = "Type extension", rang = 3)
+ private String typeExtension;
+
+ @ExportToExcel(entete = "Référentiel", position = 3, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 4, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 4)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 5, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 5)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 6, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 6)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 7, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 7)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeNoeudReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeNoeudReporting.java
new file mode 100644
index 0000000..894041d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeNoeudReporting.java
@@ -0,0 +1,52 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class GroupeNoeudReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Référentiel", position = 3, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 4, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 4)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 5, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 5)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 6, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 6)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 7, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 7)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeParticipantReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeParticipantReporting.java
new file mode 100644
index 0000000..810343d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/GroupeParticipantReporting.java
@@ -0,0 +1,52 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class GroupeParticipantReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Référentiel", position = 3, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 4, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 4)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 5, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 5)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 6, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 6)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 7, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 7)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/NoeudReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/NoeudReporting.java
new file mode 100644
index 0000000..d284ccc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/NoeudReporting.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class NoeudReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Participant", position = 3, width = 60)
+ @PrintColumn(libelle = "Participant", rang = 3)
+ private String participant;
+
+ @ExportToExcel(entete = "Référentiel", position = 4, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 4)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 5, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 5)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 6, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 6)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 7, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 7)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 8, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 8)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ParticipantReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ParticipantReporting.java
new file mode 100644
index 0000000..1a4564a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ParticipantReporting.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class ParticipantReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Référentiel", position = 3, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 3)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Pays", position = 4, width = 60)
+ @PrintColumn(libelle = "Pays", rang = 4)
+ private String pays;
+
+ @ExportToExcel(entete = "Date création", position = 5, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 5)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 6, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 6)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 7, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 7)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 8, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 8)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/PaysReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/PaysReporting.java
new file mode 100644
index 0000000..f6e00d7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/PaysReporting.java
@@ -0,0 +1,51 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class PaysReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1, width = 100)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Référentiel", position = 3, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 3, width = 100)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 4, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 4)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 5, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 5)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 6, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 6)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 7, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 7)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ReferentielReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ReferentielReporting.java
new file mode 100644
index 0000000..915f8e7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/ReferentielReporting.java
@@ -0,0 +1,52 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class ReferentielReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Version", position = 1, width = 60)
+ @PrintColumn(libelle = "Version", rang = 1)
+ private String version;
+
+ @ExportToExcel(entete = "Description", position = 2, width = 60)
+ @PrintColumn(libelle = "Description", rang = 2)
+ private String description;
+
+ @ExportToExcel(entete = "Statut", position = 3, width = 60)
+ @PrintColumn(libelle = "Statut", rang = 3)
+ private String statutReferentiel;
+
+ @ExportToExcel(entete = "Date création", position = 4, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 4)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 5, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 5)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 6, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 6)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 7, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 7)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/RoutageReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/RoutageReporting.java
new file mode 100644
index 0000000..3767ca4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/RoutageReporting.java
@@ -0,0 +1,64 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class RoutageReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code type fichier", position = 1, width = 60)
+ @PrintColumn(libelle = "Code type fichier", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Extension", position = 3, width = 60)
+ @PrintColumn(libelle = "Extension", rang = 3)
+ private String extension;
+
+ @ExportToExcel(entete = "Categorie", position = 4, width = 60)
+ @PrintColumn(libelle = "Categorie", rang = 4)
+ private String categorie;
+
+ @ExportToExcel(entete = "Participant", position = 6, width = 60)
+ @PrintColumn(libelle = "Participant", rang = 7)
+ private String participant;
+
+ @ExportToExcel(entete = "Référentiel", position = 8, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 8)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 9, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 9)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 10, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 10)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 11, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 11)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 12, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 12)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/TypeFichierReporting.java b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/TypeFichierReporting.java
new file mode 100644
index 0000000..07b5acd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-reporting/src/main/java/com/megatim/fdxconsultation/reporting/model/referentiel/TypeFichierReporting.java
@@ -0,0 +1,64 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.reporting.model.referentiel;
+
+import com.megatim.export.excel.annotations.ExportToExcel;
+import com.megatim.reporting.adhoc.annotations.PrintColumn;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ *
+ * @author bissey
+ */
+@Getter
+@Setter
+public class TypeFichierReporting {
+
+ private Long id;
+
+ @ExportToExcel(entete = "Code", position = 1, width = 60)
+ @PrintColumn(libelle = "Code", rang = 1)
+ private String code;
+
+ @ExportToExcel(entete = "Libellé", position = 2, width = 60)
+ @PrintColumn(libelle = "Libellé", rang = 2)
+ private String libelle;
+
+ @ExportToExcel(entete = "Categorie", position = 3, width = 60)
+ @PrintColumn(libelle = "Categorie", rang = 3)
+ private String categorie;
+
+ @ExportToExcel(entete = "Extension", position = 4, width = 60)
+ @PrintColumn(libelle = "Extension", rang = 4)
+ private String extension;
+
+ @ExportToExcel(entete = "Participant", position = 5, width = 60)
+ @PrintColumn(libelle = "Participant", rang = 5)
+ private String participant;
+
+ @ExportToExcel(entete = "Référentiel", position = 6, width = 60)
+ @PrintColumn(libelle = "Référentiel", rang = 6)
+ private String referentiel;
+
+ @ExportToExcel(entete = "Date création", position = 7, width = 60)
+ @PrintColumn(libelle = "Date création", rang = 7)
+ private String dateCreation;
+
+ @ExportToExcel(entete = "Crée par", position = 8, width = 60)
+ @PrintColumn(libelle = "Crée par", rang = 8)
+ private String utilisateurCreation;
+
+ @ExportToExcel(entete = "Date Dern. Mod.", position = 9, width = 60)
+ @PrintColumn(libelle = "Date Dern. Mod.", rang = 9)
+ private String dateDerniereModification;
+
+ @ExportToExcel(entete = "Modifié par", position = 10, width = 60)
+ @PrintColumn(libelle = "Modifié par", rang = 10)
+ private String utilisateurModification;
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/.gitignore b/fdx-consultation/fdxconsultation-service-ifaces/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/nb-configuration.xml b/fdx-consultation/fdxconsultation-service-ifaces/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/pom.xml b/fdx-consultation/fdxconsultation-service-ifaces/pom.xml
new file mode 100644
index 0000000..9929ed8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/pom.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.service.ifaces</groupId>
+ <artifactId>fdxconsultation-service-ifaces</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ <jakartaee>8.0</jakartaee>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-multipart-provider</artifactId>
+ <version>3.6.3.Final</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>application-backend-commons-tools</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.core.ifaces</groupId>
+ <artifactId>fdxconsultation-core-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.service.ifaces</groupId>
+ <artifactId>fdxcommons-service-ifaces</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <name>fdxconsultation-service-ifaces</name>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractCUDWithCriteriaEntityIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractCUDWithCriteriaEntityIFaces.java
new file mode 100644
index 0000000..9029bd2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractCUDWithCriteriaEntityIFaces.java
@@ -0,0 +1,45 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import com.mgt.rs.security.core.common.Secured;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AbstractCUDWithCriteriaEntityIFaces<T, K, ID> {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter", enable = true)
+ public Response save(@Context HttpHeaders headers, @Valid T entity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier", enable = true)
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid T entity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "ajouter", enable = true)
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormDataIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormDataIFaces.java
new file mode 100644
index 0000000..90441eb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormDataIFaces.java
@@ -0,0 +1,38 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface AbstractFormDataIFaces<U> {
+
+ @PermitAll
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data")
+ public Response formData(@Context HttpHeaders headers);
+
+ @PermitAll
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data-withpagination/{pageNumber}/{pagesize}")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pagesize, U searchEntity);
+
+ @PermitAll
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count-form-data")
+ public Long countFormData(@Context HttpHeaders headers, U searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormModelIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormModelIFaces.java
new file mode 100644
index 0000000..934d99c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractFormModelIFaces.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface AbstractFormModelIFaces<T> {
+
+ @PermitAll
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("/form-model")
+ Response getFormModel(@Context HttpHeaders headers);
+
+ @PermitAll
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("/form-model-update")
+ Response getFormModelUpdate(@Context HttpHeaders headers);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericConsultingCompositePKResourceIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericConsultingCompositePKResourceIFaces.java
new file mode 100644
index 0000000..fcdde3a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericConsultingCompositePKResourceIFaces.java
@@ -0,0 +1,69 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.mgt.rs.security.core.common.Secured;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AbstractGenericConsultingCompositePKResourceIFaces<T, K, U> {
+
+ K mapToDto(T entity);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findby-id/{referentielVersion}/{codeTypeFichier}")
+ @Secured(action = "*")
+ public Response findById(@Context HttpHeaders headers, @PathParam("referentielVersion") String referentielVersion, @PathParam("codeTypeFichier") String codeTypeFichier);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "consulter", enable = true)
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pagesize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(action = "consulter", enable = true)
+ @Path("find-all")
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"consulter"})
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"consulter"})
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ public default List<K> allToDto(List<T> datas) {
+ List<K> dtos = new ArrayList<>();
+
+ if (datas != null) {
+ for (T data : datas) {
+ dtos.add(mapToDto(data));
+ }
+ }
+ return dtos;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericCrudResourceIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericCrudResourceIFaces.java
new file mode 100644
index 0000000..59786af
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericCrudResourceIFaces.java
@@ -0,0 +1,61 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import com.mgt.rs.security.core.common.Secured;
+import java.io.Serializable;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+public interface AbstractGenericCrudResourceIFaces<T, K, ID extends Serializable, U> { //U représente le type de l'objet sur lequel on va appliquer la recherche
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter")
+ public Response save(@Context HttpHeaders headers, @Valid T entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ public Response update(@Context HttpHeaders headers, @PathParam("id") ID id, @Valid T entity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") ID id);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findbyid/{id}")
+ @Secured(action = "*")
+ public Response findById(@Context HttpHeaders headers, @PathParam("id") ID id);
+
+// @POST
+// @Produces({MediaType.APPLICATION_JSON})
+// @Path("findwithpagination/{pageNumber}/{pagesize}")
+// @Secured(actions = {"ajouter", "modifier", "supprimer", "voir"})
+// public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pagesize, U searchEntity);
+//
+// @POST
+// @Produces({MediaType.APPLICATION_JSON})
+// @Secured(actions = {"ajouter", "modifier", "supprimer", "voir"})
+// @Path("findall")
+// public Response findAll(@Context HttpHeaders headers, U searchEntity);
+// @POST
+// @Produces({MediaType.APPLICATION_JSON})
+// @Path("count")
+// @Secured(actions = {"ajouter", "modifier", "supprimer", "voir"})
+// public Long count(@Context HttpHeaders headers, U searchEntity);
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericReportingIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericReportingIFaces.java
new file mode 100644
index 0000000..7c1bab5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericReportingIFaces.java
@@ -0,0 +1,57 @@
+/*
+ * 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.service.ifaces.abstracts;
+
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.annotation.security.PermitAll;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AbstractGenericReportingIFaces<U,K> {
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<U> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") K id, ReportConfiguration<U> reportConfiguration);
+
+ @PermitAll
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("print-metadata")
+ Response getPrintableColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<U> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") K id, ReportConfiguration<U> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericValidationIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericValidationIFaces.java
new file mode 100644
index 0000000..20d197c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractGenericValidationIFaces.java
@@ -0,0 +1,99 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.bekosoftware.genericmanagerlayer.core.ifaces.GenericManager;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface AbstractGenericValidationIFaces<T, U, K, ID extends Serializable> {
+
+ @PermitAll
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("validate")
+ public default void validate(@Context HttpHeaders headers, T entity) {
+
+ }
+
+ @PermitAll
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("reject")
+ public default void reject(@Context HttpHeaders headers, T entity) {
+
+ }
+
+ @PermitAll
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ public default List<T> findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pagesize, K searchEntity) {
+
+ //Variables
+ List<T> datas = null;
+
+ //On construit la requete
+ RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
+
+ //Construction de l'index
+ int index = (pageNumber - 1) * pagesize;
+
+ //Si non vide
+ if (datas == null || datas.isEmpty()) {
+
+ //Liste vide
+ datas = new ArrayList<>();
+
+ }
+
+ return datas;
+
+ }
+
+ @PermitAll
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ public default Long count(@Context HttpHeaders headers, K searchEntity) {
+
+ //Variables
+ Long count = 0l;
+
+ //On construit la requete
+ RestrictionsContainer requeteur = construireRequete(searchEntity, TypeOperation.AJOUTER);
+
+ //On on recherche l'entité
+ count = getManager().count(requeteur.getPredicats());
+
+ return count;
+
+ }
+
+ public abstract GenericManager<T, ID> getManager();
+
+ public abstract U getActualState();
+
+ public abstract U getNextState();
+
+ public abstract U getRejectionState();
+
+ public abstract RestrictionsContainer construireRequete(K parametre, TypeOperation typeOperation);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractReadWithCriteriaEntityIFaces.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractReadWithCriteriaEntityIFaces.java
new file mode 100644
index 0000000..6f4567f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractReadWithCriteriaEntityIFaces.java
@@ -0,0 +1,53 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface AbstractReadWithCriteriaEntityIFaces<T, K, ID> {
+
+ public K mapToDto(T entity);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findbyid/{id}")
+ @Secured(action = "*")
+ public Response findById(@Context HttpHeaders headers, @PathParam("id") ID id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "consulter", enable = true)
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"consulter"})
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"consulter"})
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(action = "consulter", enable = true)
+ @Path("find-all")
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractUniqueElementIFace.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractUniqueElementIFace.java
new file mode 100644
index 0000000..b30f2f4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/abstracts/AbstractUniqueElementIFace.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxconsultation.service.ifaces.abstracts;
+
+//import com.megatim.retrocedor.web.core.ifaces.common.UniqueElement;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface AbstractUniqueElementIFace<T> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/ActionRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/ActionRS.java
new file mode 100644
index 0000000..bb2957d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/ActionRS.java
@@ -0,0 +1,15 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.megatim.fdxconsultation.model.dto.ActionDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericCrudResourceIFaces;
+
+/**
+ * Interface du service JAX-RS
+ *
+ * @since Fri Sep 27 08:15:34 GMT+01:00 2019
+ *
+ */
+public interface ActionRS extends AbstractGenericCrudResourceIFaces<Action, ActionDto, Long, Action> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalActionUtilisateurRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalActionUtilisateurRS.java
new file mode 100644
index 0000000..facb6a3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalActionUtilisateurRS.java
@@ -0,0 +1,92 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.model.dto.JournalActionUtilisateurDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * Interface du service JAX-RS
+ *
+ * @since Fri Sep 27 08:15:34 GMT+01:00 2019
+ *
+ */
+public interface JournalActionUtilisateurRS extends AbstractReadWithCriteriaEntityIFaces<JournalActionUtilisateur, JournalActionUtilisateurDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des actions utilisateurs")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"exporter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"exporter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"exporter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des actions utilisateurs")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf détail action utilisateur id={id}")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des actions utilisateurs")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel détail action utilisateur id={id}")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalConnexionUtilisateurRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalConnexionUtilisateurRS.java
new file mode 100644
index 0000000..bff6133
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/JournalConnexionUtilisateurRS.java
@@ -0,0 +1,94 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+import com.megatim.fdxconsultation.model.dto.JournalConnexionUtilisateurDto;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * Interface du service JAX-RS
+ *
+ * @since Fri Sep 27 08:15:34 GMT+01:00 2019
+ *
+ */
+public interface JournalConnexionUtilisateurRS extends AbstractReadWithCriteriaEntityIFaces<JournalConnexionUtilisateur, JournalConnexionUtilisateurDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"imprimer", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des connexions utilisateurs")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"imprimer", "exporter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"imprimer", "exporter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"imprimer", "exporter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des connexions utilisateurs")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf détail connexion utilisateur id={id}")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des connexions utilisateurs")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel détail connexion utilisateur id={id}")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleRS.java
new file mode 100644
index 0000000..a6d1208
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleRS.java
@@ -0,0 +1,125 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.formodel.RoleFormModel;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormModelIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericCrudResourceIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * Interface du service JAX-RS
+ *
+ * @since Fri Sep 27 08:15:34 GMT+01:00 2019
+ *
+ */
+public interface RoleRS extends
+ AbstractGenericCrudResourceIFaces<Role, RoleDto, Long, Role>,
+ AbstractReadWithCriteriaEntityIFaces<Role, RoleDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long>, AbstractFormModelIFaces<RoleFormModel> {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter")
+ @LoggingInterceptorBinding(message = "Enregistrement d'un nouvel groupe utilisateur : [1.libelle]")
+ @Override
+ public Response save(@Context HttpHeaders headers, @Valid Role entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ @LoggingInterceptorBinding(message = "Mise à jour du groupe utilisateur : [2.libelle]")
+ @Override
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid Role entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ @LoggingInterceptorBinding(message = "Suppression du groupe utilisateur : [2.libelle]")
+ @Override
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des groupes utilisateurs")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des groupes utilisateurs en attente de validation")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ //@LoggingInterceptorBinding(message = "Impression détail groupe utilisateur")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des groupes utilisateurs en attente de validation")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleValidationRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleValidationRS.java
new file mode 100644
index 0000000..1ae46d8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/RoleValidationRS.java
@@ -0,0 +1,115 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.formodel.RoleFormModel;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormModelIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RoleValidationRS extends AbstractReadWithCriteriaEntityIFaces<Role, RoleDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long>, AbstractFormModelIFaces<RoleFormModel> {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("validate/{name}")
+ @Secured(action = "valider")
+ @SecuredSuperAdmin
+ @LoggingInterceptorBinding(message = "Validation du groupe utilisateur : {name}")
+ public void validate(@Context HttpHeaders headers, @PathParam("name") String name);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("reject/{name}")
+ @Secured(action = "rejeter")
+ @SecuredSuperAdmin
+ @LoggingInterceptorBinding(message = "Validation rejetée du groupe utilisateur : {name}")
+ public void reject(@Context HttpHeaders headers, @PathParam("name") String name, Role entity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des groupes utilisateurs en attente de validation")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des groupes utilisateurs en attente de validation")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ //@LoggingInterceptorBinding(message = "Impression détail groupe utilisateur en attente de validation")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des utilisateurs en attente de validation")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserRS.java
new file mode 100644
index 0000000..545d971
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserRS.java
@@ -0,0 +1,132 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.EditPasswordDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericCrudResourceIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ * Interface du service JAX-RS
+ *
+ * @since Fri Sep 27 08:15:34 GMT+01:00 2019
+ *
+ */
+public interface UserRS extends AbstractGenericCrudResourceIFaces<User, UserDto, Long, User>,
+ AbstractReadWithCriteriaEntityIFaces<User, UserDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter")
+ @LoggingInterceptorBinding(message = "Enregistrement d'un nouvel utilisateur : [1.userName]")
+ @Override
+ public Response save(@Context HttpHeaders headers, @Valid User entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ @LoggingInterceptorBinding(message = "Mise à jour de l'utilisateur : [2.userName]")
+ @Override
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid User entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ @LoggingInterceptorBinding(message = "Suppression de l'utilisateur : [2.userName]")
+ @Override
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("edit-password/{username}")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @LoggingInterceptorBinding(message = "Modification du mot de passe de l'utilisateur : {username}")
+ public Response editPassword(@Context HttpHeaders headers, @PathParam("username") String username, @Valid EditPasswordDto editPasswordDto);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des utilisateurs")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des utilisateurs")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ //@LoggingInterceptorBinding(message = "Impression détail utilisateur")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des utilisateurs")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserValidationRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserValidationRS.java
new file mode 100644
index 0000000..2326989
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/administration/UserValidationRS.java
@@ -0,0 +1,109 @@
+package com.megatim.fdxconsultation.service.ifaces.administration;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface UserValidationRS extends AbstractReadWithCriteriaEntityIFaces<User, UserDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("validate/{username}")
+ @Secured(action = "valider")
+ @SecuredSuperAdmin
+ @LoggingInterceptorBinding(message = "Validation de l'utilisateur : {username}")
+ public void validate(@Context HttpHeaders headers, @PathParam("username") String username);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("reject/{username}")
+ @Secured(action = "rejeter")
+ @SecuredSuperAdmin
+ @LoggingInterceptorBinding(message = "Validation rejetée de l'utilisateur : {username}")
+ public void reject(@Context HttpHeaders headers, @PathParam("username") String username, User entity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des utilisateurs en attente de validation")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des utilisateurs en attente de validation")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ //@LoggingInterceptorBinding(message = "Export pdf utilisateur en attente de validation")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des utilisateurs en attente de validation")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/api/token/ApiTokenRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/api/token/ApiTokenRS.java
new file mode 100644
index 0000000..84b1079
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/api/token/ApiTokenRS.java
@@ -0,0 +1,120 @@
+package com.megatim.fdxconsultation.service.ifaces.api.token;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.mgt.rs.security.core.common.Secured;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericCrudResourceIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface ApiTokenRS extends AbstractGenericCrudResourceIFaces<ApiToken, ApiTokenDto, Long, ApiToken>,
+ AbstractReadWithCriteriaEntityIFaces<ApiToken, ApiTokenDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long>{
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("add")
+ @Secured(action = "ajouter")
+ @LoggingInterceptorBinding(message = "Mot de passe API généré, pour le participant : [1.participant.code]")
+ public Response save(@Context HttpHeaders headers, @Valid ApiToken entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ @LoggingInterceptorBinding(message = "Mot de passe API regénéré, pour le participant : [2.participant.code]")
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid ApiToken entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ @LoggingInterceptorBinding(message = "Suppression mot de passe API, pour le participant : [2.participant.code]")
+ @Override
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(action = "*", enable = true)
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces(MediaType.APPLICATION_JSON)
+ @Secured(action = "bloquer")
+ @Path("lock/{id}")
+ //@LoggingInterceptorBinding(message = "Mot de passe API désactivé, pour le participant : {id}")
+ public Response lock(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces(MediaType.APPLICATION_JSON)
+ @Secured(action = "débloquer")
+ @Path("unlock/{id}")
+ //@LoggingInterceptorBinding(message = "Mot de passe API activé, pour le participant : {id}")
+ public Response unLock(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"ajouter", "modifier", "supprimer", "consulter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des mots de passe API")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Impression liste des mots de passe API")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ //@LoggingInterceptorBinding(message = "Impression détail mot de passe API")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des mots de passe API ")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/authentication/AuthenticationRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/authentication/AuthenticationRS.java
new file mode 100644
index 0000000..54bc64e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/authentication/AuthenticationRS.java
@@ -0,0 +1,110 @@
+package com.megatim.fdxconsultation.service.ifaces.authentication;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.authentification.LoginRequest;
+import com.mgt.rs.security.core.common.Secured;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+public interface AuthenticationRS {
+
+ /**
+ * Validate user credentials and issue a token for the user.
+ *
+ * @param loginRequest
+ * @return
+ */
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @PermitAll
+ @Path("login")
+ @LoggingInterceptorBinding(message = "Connexion de l'utilisateur [0.userName]")
+ public Response authenticate(LoginRequest loginRequest);
+
+ /**
+ * Permet de recuperer les informations de l'utilisateur.
+ *
+ * @param headers
+ * @param username
+ * @return
+ */
+ @GET
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @SecuredAdmin
+ @SecuredSuperAdmin
+ @SecuredMegaAdmin
+ @Path("info")
+ @Secured(action = "*")
+ public Response getInfoUser(@Context HttpHeaders headers);
+
+ /**
+ * Permet de savoir si un utilisateur avec le même username existe dejà
+ *
+ * @param headers
+ * @param username
+ * @return
+ */
+ @GET
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("checkusername/{username}")
+ @Secured(action = "*")
+ @SecuredAdmin
+ @SecuredSuperAdmin
+ @SecuredMegaAdmin
+ public Response ifUserNameExist(@Context HttpHeaders headers, @PathParam("username") String username);
+
+ /**
+ * Permet de déconnecter l'utilisateur.
+ *
+ * @param headers
+ * @param entity
+ * @return
+ */
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @SecuredAdmin
+ @SecuredSuperAdmin
+ @SecuredMegaAdmin
+ @Path("logout")
+ @Secured(action = "*")
+ @LoggingInterceptorBinding(message = "Déconnexion de l'utilisateur [1.userName]")
+ public Response logout(@Context HttpHeaders headers, User entity);
+
+ /**
+ * Permet de générer les données de test
+ *
+ * @param headers
+ * @return
+ */
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @SecuredAdmin
+ @SecuredSuperAdmin
+ @SecuredMegaAdmin
+ @Path("test")
+ @Secured(action="*")
+ public Response generateDataTotTest(@Context HttpHeaders headers);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/chat/UserChatListRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/chat/UserChatListRS.java
new file mode 100644
index 0000000..1d8f19b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/chat/UserChatListRS.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxconsultation.service.ifaces.chat;
+
+import com.megatim.fdxconsultation.model.searchentities.UserSearch;
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserChatListRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findall")
+ @PermitAll
+ public Response findAll(@Context HttpHeaders headers, UserSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @PermitAll
+ public Long count(@Context HttpHeaders headers, UserSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/consumption/DataConsumptionOperationsRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/consumption/DataConsumptionOperationsRS.java
new file mode 100644
index 0000000..d11d695
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/consumption/DataConsumptionOperationsRS.java
@@ -0,0 +1,63 @@
+package com.megatim.fdxconsultation.service.ifaces.consumption;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView;
+import com.mgt.rs.security.core.common.Secured;
+import javax.annotation.security.PermitAll;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataConsumptionOperationsRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("find/{referentiel_version}/{code_type_fichier}")
+ @Secured(action = "*", enable = true)
+ @LoggingInterceptorBinding(message = "Consultation des données du typefichier {code_type_fichier}")
+ public Response find(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("find-with-pagination/{referentiel_version}/{code_type_fichier}/{pageNumber}/{pageSize}")
+ @Secured(action = "consulter", enable = true)
+ @LoggingInterceptorBinding(message = "Consultation des données du typefichier {code_type_fichier}")
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier, @PathParam("pageNumber") Integer pageNumber, @PathParam("pageSize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("count/{referentiel_version}/{code_type_fichier}")
+ @PermitAll
+ @LoggingInterceptorBinding(message = "Compte des données du typefichier {code_type_fichier}")
+ public Long count(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("print-metadata/{referentiel_version}/{code_type_fichier}")
+ @PermitAll
+ @LoggingInterceptorBinding(message = "Consultation des colonnes imprimables du typefichier [code_type_fichier]")
+ public Response getPrintableColumns(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("print-all/{referentiel_version}/{code_type_fichier}")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Impression d'un état du typefichier {code_type_fichier}")
+ public Response printAll(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier, CustomTypeFichierReportConfigurationFromView reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/dataproduction/DataProductionRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/dataproduction/DataProductionRS.java
new file mode 100644
index 0000000..7719d5f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/dataproduction/DataProductionRS.java
@@ -0,0 +1,71 @@
+/*
+ * 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.service.ifaces.dataproduction;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataProductionRS extends AbstractReadWithCriteriaEntityIFaces<DataProduction, DataProductionDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @Override
+ public DataProductionDto mapToDto(DataProduction entity);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findbyid/{id}")
+ @Secured(action = "*")
+ @Override
+ public Response findById(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "Echanges données", enable = true)
+ @LoggingInterceptorBinding(message = "Consultation tableau de bord Fdx API", classe = TableauBordSlimDto.class)
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"Echanges données"})
+ @Override
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"Echanges données"})
+ @Override
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(action = "Echanges données", enable = true)
+ @Path("find-all")
+ @Override
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/CategoryRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/CategoryRS.java
new file mode 100644
index 0000000..b934b8c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/CategoryRS.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxconsultation.service.ifaces.documents;
+
+import com.megatim.fdxconsultation.model.documents.Category;
+import com.mgt.rs.security.core.common.Secured;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface CategoryRS {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter")
+ public Response save(@Context HttpHeaders headers, @Valid Category entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid Category entity);
+
+ @DELETE
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ public void delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("all")
+ public Response all(@Context HttpHeaders headers);
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/DocumentRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/DocumentRS.java
new file mode 100644
index 0000000..2425d05
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/documents/DocumentRS.java
@@ -0,0 +1,44 @@
+package com.megatim.fdxconsultation.service.ifaces.documents;
+
+import com.megatim.fdxconsultation.model.documents.Document;
+import com.mgt.rs.security.core.common.Secured;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DocumentRS {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add/{categoryId}")
+ @Secured(action = "ajouter")
+ public Response save(@Context HttpHeaders headers, @PathParam("categoryId") Long categoryId, @Valid Document entity);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier")
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid Document entity);
+
+ @DELETE
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "supprimer")
+ public void delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/favoritessearch/FavoriteSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/favoritessearch/FavoriteSearchRS.java
new file mode 100644
index 0000000..894a31d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/favoritessearch/FavoriteSearchRS.java
@@ -0,0 +1,56 @@
+package com.megatim.fdxconsultation.service.ifaces.favoritessearch;
+
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.FavoriteSearchDto;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import com.mgt.rs.security.core.common.Secured;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface FavoriteSearchRS {
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "consulter")
+ public Response save(@Context HttpHeaders headers, @Valid FavoriteSearchDto favoriteSearch);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("all")
+ @Secured(action = "consulter")
+ public Response all(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "consulter", enable = true)
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"consulter"})
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"consulter"})
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/integration/ColumnDefinitionResource.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/integration/ColumnDefinitionResource.java
new file mode 100644
index 0000000..209dde9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/integration/ColumnDefinitionResource.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxconsultation.service.ifaces.integration;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface ColumnDefinitionResource {
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("/{codeTypeFichier}/{referentielVersion}")
+ public Response columnDefinitions(@Context HttpHeaders headers, @PathParam("codeTypeFichier") String codeTypeFichier, @PathParam("referentielVersion") String referentielVersion);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/ApiUserActionLogRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/ApiUserActionLogRS.java
new file mode 100644
index 0000000..373da24
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/ApiUserActionLogRS.java
@@ -0,0 +1,90 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.log;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ApiUserActionLogRS extends AbstractReadWithCriteriaEntityIFaces<ApiUserActionLog, UserActionLogDto, Long>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("getby-statut")
+ @Secured(action = "Tableau de bord", enable = true)
+ public Response getByStatut(@Context HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("getby-statut-participant")
+ @Secured(action = "Stat endpoint par participant", enable = true)
+ public Response getByStatutAndUserName(@Context HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("getby-statut-path")
+ @Secured(action = "Stat endpoint par path", enable = true)
+ public Response getByStatutAndPath(@Context HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "Piste d'audit", enable = true)
+ @LoggingInterceptorBinding(message = "Consultation liste des logs API")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "Piste d'audit", enable = true)
+ @LoggingInterceptorBinding(message = "Export pdf liste des logs API")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "Piste d'audit", enable = true)
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "Piste d'audit", enable = true)
+ @LoggingInterceptorBinding(message = "Export excel liste des logs API")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "Piste d'audit", enable = true)
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/UserActionLogRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/UserActionLogRS.java
new file mode 100644
index 0000000..f61623f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/log/UserActionLogRS.java
@@ -0,0 +1,14 @@
+package com.megatim.fdxconsultation.service.ifaces.log;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface UserActionLogRS extends AbstractReadWithCriteriaEntityIFaces<UserActionLog, UserActionLogDto, Long>, AbstractGenericReportingIFaces<CriteriaFormRequest, Long> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ExtensionFichierRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ExtensionFichierRS.java
new file mode 100644
index 0000000..0374f5d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ExtensionFichierRS.java
@@ -0,0 +1,70 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxcommons.model.dtos.referentiel.ExtensionFichierDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ExtensionFichierRS extends AbstractReadWithCriteriaEntityIFaces<ExtensionFichier, ExtensionFichierDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des extensions")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des extensions")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des extensions")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeNoeudRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeNoeudRS.java
new file mode 100644
index 0000000..7c26bfa
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeNoeudRS.java
@@ -0,0 +1,70 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeNoeudDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeNoeudRS extends AbstractReadWithCriteriaEntityIFaces<GroupeNoeud, GroupeNoeudDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des groupes de noeuds")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des groupes de noeuds")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des groupes de noeuds")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeParticipantRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeParticipantRS.java
new file mode 100644
index 0000000..6a54255
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/GroupeParticipantRS.java
@@ -0,0 +1,70 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeParticipantDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface GroupeParticipantRS extends AbstractReadWithCriteriaEntityIFaces<GroupeParticipant, GroupeParticipantDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des groupes de participants")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des groupes de participants")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des groupes de participants")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/NoeudRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/NoeudRS.java
new file mode 100644
index 0000000..49cc15c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/NoeudRS.java
@@ -0,0 +1,70 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxcommons.model.dtos.referentiel.NoeudDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface NoeudRS extends AbstractReadWithCriteriaEntityIFaces<Noeud, NoeudDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des noeuds")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des noeuds")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des noeuds")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ParticipantRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ParticipantRS.java
new file mode 100644
index 0000000..1f528e7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ParticipantRS.java
@@ -0,0 +1,66 @@
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ParticipantRS extends AbstractReadWithCriteriaEntityIFaces<Participant, ParticipantDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des participants")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des participants")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des participants")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/PaysRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/PaysRS.java
new file mode 100644
index 0000000..b266491
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/PaysRS.java
@@ -0,0 +1,68 @@
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxcommons.model.dtos.referentiel.PaysDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.annotation.security.PermitAll;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface PaysRS extends AbstractReadWithCriteriaEntityIFaces<Pays, PaysDto, String>, AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des pays")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des pays")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @PermitAll
+// @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des pays")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ReferentielRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ReferentielRS.java
new file mode 100644
index 0000000..15598fd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/ReferentielRS.java
@@ -0,0 +1,66 @@
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface ReferentielRS extends AbstractReadWithCriteriaEntityIFaces<Referentiel, ReferentielDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des referentiels")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des referentiels")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des referentiels")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/RoutageRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/RoutageRS.java
new file mode 100644
index 0000000..af10940
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/RoutageRS.java
@@ -0,0 +1,85 @@
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.referentiel.dtos.RoutageSlimResponse;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericConsultingCompositePKResourceIFaces;
+import com.megatim.fdxconsultation.model.searchentities.RoutageSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RoutageRS extends AbstractGenericConsultingCompositePKResourceIFaces<Routage, RoutageSlimResponse, RoutageSearch>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des extensions")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des routages")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{codetypefichier}/{versionreferentiel}")
+ @Secured(action = "exporter")
+ public Response printOneRoutage(@Context HttpHeaders headers, @Context HttpServletRequest request,
+ @PathParam("codetypefichier") String codeTypeFichier,
+ @PathParam("versionreferentiel") String versionReferentiel,
+ ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des routages")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{codetypefichier}/{versionreferentiel}")
+ @Secured(action = "exporter")
+ public Response exportExcelOneRoutage(@Context HttpHeaders headers, @Context HttpServletRequest request,
+ @PathParam("codetypefichier") String codeTypeFichier,
+ @PathParam("versionreferentiel") String versionReferentiel,
+ ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TestRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TestRS.java
new file mode 100644
index 0000000..6e5f1cd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TestRS.java
@@ -0,0 +1,27 @@
+/*
+ * 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.service.ifaces.referentiel;
+
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TestRS<U, ID> {
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("add-one/{id}")
+ public Response test(@Context HttpHeaders headers, @PathParam("id") String id, ReportConfiguration<U> reportConfiguration);
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TypeFichierRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TypeFichierRS.java
new file mode 100644
index 0000000..ca5b69a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/referentiel/TypeFichierRS.java
@@ -0,0 +1,66 @@
+package com.megatim.fdxconsultation.service.ifaces.referentiel;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericReportingIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.mgt.rs.security.core.common.Secured;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TypeFichierRS extends AbstractReadWithCriteriaEntityIFaces<TypeFichier, TypeFichierDto, String>,
+ AbstractGenericReportingIFaces<CriteriaFormRequest, String> {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"valider", "rejeter", "exporter"})
+ @LoggingInterceptorBinding(message = "Consultation liste des types fichiers")
+ @Override
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export pdf liste des types fichiers")
+ @Override
+ public Response printAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/pdf/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id")String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/all")
+ @Secured(action = "exporter")
+ @LoggingInterceptorBinding(message = "Export excel liste des types fichiers")
+ @Override
+ public Response exportExcelAll(@Context HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+ @POST
+ @Produces(MediaType.APPLICATION_OCTET_STREAM)
+ @Path("export/excel/detail/{id}")
+ @Secured(action = "exporter")
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, @PathParam("id") String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/remoteaction/RemoteConfigurationRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/remoteaction/RemoteConfigurationRS.java
new file mode 100644
index 0000000..2a3b35d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/remoteaction/RemoteConfigurationRS.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.remoteaction;
+
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractGenericCrudResourceIFaces;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractReadWithCriteriaEntityIFaces;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface RemoteConfigurationRS extends AbstractReadWithCriteriaEntityIFaces<RemoteConfiguration, RemoteConfigurationDto, String>,
+ AbstractGenericCrudResourceIFaces<RemoteConfiguration, RemoteConfigurationDto, String, RemoteConfiguration> {
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/DasboardTypeFichierSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/DasboardTypeFichierSearchRS.java
new file mode 100644
index 0000000..757ddb9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/DasboardTypeFichierSearchRS.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DasboardTypeFichierSearchRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{referentiel}/{pageNumber}/{pagesize}")
+ @Secured(action = "*")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("referentiel") String referentiel, @PathParam("pageNumber") Integer pageNumber,
+ @PathParam("pagesize") Integer pagesize, TypeFichierSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count/{referentiel}")
+ @Secured(action = "*")
+ public Long countFormData(@Context HttpHeaders headers, @PathParam("referentiel") String referentiel, TypeFichierSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/GlobalDasboardSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/GlobalDasboardSearchRS.java
new file mode 100644
index 0000000..8128f70
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/GlobalDasboardSearchRS.java
@@ -0,0 +1,7 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TableauBordGlobalSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+public interface GlobalDasboardSearchRS extends AbstractFormDataIFaces<TableauBordGlobalSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ParticipantSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ParticipantSearchRS.java
new file mode 100644
index 0000000..3fd9646
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ParticipantSearchRS.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface ParticipantSearchRS extends AbstractFormDataIFaces<ParticipantSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ReferentielSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ReferentielSearchRS.java
new file mode 100644
index 0000000..60f9b74
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/ReferentielSearchRS.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface ReferentielSearchRS extends AbstractFormDataIFaces<ReferentielSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/RoleSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/RoleSearchRS.java
new file mode 100644
index 0000000..e50030b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/RoleSearchRS.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.RoleSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface RoleSearchRS extends AbstractFormDataIFaces<RoleSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TableauBordSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TableauBordSearchRS.java
new file mode 100644
index 0000000..94f9c53
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TableauBordSearchRS.java
@@ -0,0 +1,7 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSpecificSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+public interface TableauBordSearchRS extends AbstractFormDataIFaces<TableauBordSpecificSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierReferentielSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierReferentielSearchRS.java
new file mode 100644
index 0000000..712012f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierReferentielSearchRS.java
@@ -0,0 +1,32 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierReferentielSearchRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "*")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pagesize, TypeFichierReferentielSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(action = "*")
+ public Long countFormData(@Context HttpHeaders headers, TypeFichierReferentielSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierSearchRS.java
new file mode 100644
index 0000000..34966c2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/TypeFichierSearchRS.java
@@ -0,0 +1,11 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.abstracts.AbstractFormDataIFaces;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface TypeFichierSearchRS extends AbstractFormDataIFaces<TypeFichierSearch> {
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserParticipantSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserParticipantSearchRS.java
new file mode 100644
index 0000000..5073590
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserParticipantSearchRS.java
@@ -0,0 +1,45 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserParticipantSearchRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data")
+ @Secured(action = "*")
+ public Response formData(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data-withpagination/{pageNumber}/{pagesize}")
+ @Secured(action = "*")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber,
+ @PathParam("pagesize") Integer pagesize, ParticipantSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data-all")
+ @Secured(action = "*")
+ public Response formDataFindAll(@Context HttpHeaders headers, ParticipantSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count-form-data")
+ @Secured(action = "*")
+ public Long countFormData(@Context HttpHeaders headers, ParticipantSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierSearchRS.java
new file mode 100644
index 0000000..412735d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierSearchRS.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserTypeFichierSearchRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data/{userName}")
+ public Response formData(@Context HttpHeaders headers, @PathParam("userName") String userName);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("form-data-withpagination/{userName}/{pageNumber}/{pagesize}")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("userName") String userName, @PathParam("pageNumber") Integer pageNumber,
+ @PathParam("pagesize") Integer pagesize, TypeFichierSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count-form-data/{userName}")
+ public Long countFormData(@Context HttpHeaders headers, @PathParam("userName") String userName, TypeFichierSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierWithReferentielSearchRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierWithReferentielSearchRS.java
new file mode 100644
index 0000000..a4bd000
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/searchs/UserTypeFichierWithReferentielSearchRS.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.service.ifaces.searchs;
+
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface UserTypeFichierWithReferentielSearchRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{referentiel}/{pageNumber}/{pagesize}")
+ @Secured(action = "*")
+ public Response formDataWithPagination(@Context HttpHeaders headers, @PathParam("referentiel") String referentiel, @PathParam("pageNumber") Integer pageNumber,
+ @PathParam("pagesize") Integer pagesize, TypeFichierSearch searchEntity);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count/{referentiel}")
+ @Secured(action = "*")
+ public Long countFormData(@Context HttpHeaders headers, @PathParam("referentiel") String referentiel, TypeFichierSearch searchEntity);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/DisplayOptionsRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/DisplayOptionsRS.java
new file mode 100644
index 0000000..f3693f0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/DisplayOptionsRS.java
@@ -0,0 +1,32 @@
+package com.megatim.fdxconsultation.service.ifaces.settings;
+
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface DisplayOptionsRS {
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("current")
+ @Secured(action = "edition", enable = true)
+ public Response current(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("edit")
+ @Secured(action = "edition", enable = true)
+ public Response edit(@Context HttpHeaders headers, DisplayOptions displayOptions);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/SettingRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/SettingRS.java
new file mode 100644
index 0000000..3d31c8f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/settings/SettingRS.java
@@ -0,0 +1,22 @@
+package com.megatim.fdxconsultation.service.ifaces.settings;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface SettingRS {
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("current-referentiel")
+ public Response currentReferentiel(@Context HttpHeaders headers);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordGlobalRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordGlobalRS.java
new file mode 100644
index 0000000..fc71bf1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordGlobalRS.java
@@ -0,0 +1,123 @@
+package com.megatim.fdxconsultation.service.ifaces.stats;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import com.mgt.rs.security.core.common.Secured;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.validation.Valid;
+import javax.ws.rs.POST;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordGlobalRS /*extends AbstractReadWithCriteriaEntityIFaces<TableauBord, TableauBordDto, Long>*/ {
+
+ public TableauBordSlimDto mapToSlimDto(TableauBord entity);
+
+ //@Override
+ public default TableauBordDto mapToDto(TableauBord entity) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public default List<TableauBordSlimDto> allToSlimDto(List<TableauBord> datas) {
+ List<TableauBordSlimDto> dtos = new ArrayList<>();
+
+ if (datas != null) {
+ for (TableauBord data : datas) {
+ dtos.add(mapToSlimDto(data));
+ }
+ }
+ return dtos;
+ }
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("print-metadata/{referentiel_version}/{code_type_fichier}")
+ @Secured(actions = {"ajouter", "modifier"})
+ @LoggingInterceptorBinding(message = "Consultation des colonnes de recherche pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response getColumns(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("get-datas/{referentiel_version}/{code_type_fichier}")
+ @Secured(action = "consulter", actions = {"ajouter", "modifier"}, enable = true)
+ @LoggingInterceptorBinding(message = "Consultation des données pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response getDatas(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "ajouter", enable = true)
+ @LoggingInterceptorBinding(message = "Ajout d'un nouveau tableau de bord du typefichier [1.typeFichier.code], l'identifiant est (id)", classe = TableauBordSlimDto.class)
+ public Response save(@Context HttpHeaders headers, @Valid TableauBordRequest tableauBordRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "modifier", enable = true)
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid TableauBordRequest tableauBordRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "ajouter", enable = true)
+ @LoggingInterceptorBinding(message = "Suppression du tableau de bord dont l'identifiant est {id}")
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete-user-tableaubord/{userName}")
+ @Secured(action = "ajouter", enable = true)
+ public Response deleteUserTableauBord(@Context HttpHeaders headers, @PathParam("userName") String userName);
+
+ //public K mapToDto(T entity);
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findbyid/{id}")
+ @Secured(actions = {"ajouter", "modifier"})
+ public Response findById(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"ajouter", "modifier"})
+ @LoggingInterceptorBinding(message = "Consultation des colonnes de recherche pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"ajouter", "modifier"})
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"ajouter", "modifier"})
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"ajouter", "modifier"})
+ @Path("find-all")
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordRS.java
new file mode 100644
index 0000000..2df603e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/stats/TableauBordRS.java
@@ -0,0 +1,122 @@
+package com.megatim.fdxconsultation.service.ifaces.stats;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.LoggingInterceptorBinding;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import com.mgt.rs.security.core.common.Secured;
+import java.util.ArrayList;
+import java.util.List;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.validation.Valid;
+import javax.ws.rs.POST;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface TableauBordRS /*extends AbstractReadWithCriteriaEntityIFaces<TableauBord, TableauBordDto, Long>*/ {
+
+ public TableauBordSlimDto mapToSlimDto(TableauBord entity);
+
+ //@Override
+ public default TableauBordDto mapToDto(TableauBord entity) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public default List<TableauBordSlimDto> allToSlimDto(List<TableauBord> datas) {
+ List<TableauBordSlimDto> dtos = new ArrayList<>();
+
+ if (datas != null) {
+ for (TableauBord data : datas) {
+ dtos.add(mapToSlimDto(data));
+ }
+ }
+ return dtos;
+ }
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("print-metadata/{referentiel_version}/{code_type_fichier}")
+ @Secured(actions = {"éditer"}, enable = true)
+ @LoggingInterceptorBinding(message = "Consultation des colonnes de recherche pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response getColumns(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("get-datas/{referentiel_version}/{code_type_fichier}")
+ @Secured(action = "éditer", enable = true)
+ @LoggingInterceptorBinding(message = "Consultation des données pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response getDatas(@Context HttpHeaders headers, @PathParam("referentiel_version") String referentielVersion, @PathParam("code_type_fichier") String codeTypeFichier);
+
+ @POST
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("add")
+ @Secured(action = "éditer", enable = true)
+ @LoggingInterceptorBinding(message = "Ajout d'un nouveau tableau de bord du typefichier [1.typeFichier.code], l'identifiant est (id)", classe = TableauBordSlimDto.class)
+ public Response save(@Context HttpHeaders headers, @Valid TableauBordRequest tableauBordRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @Path("update/{id}")
+ @Secured(action = "éditer", enable = true)
+ public Response update(@Context HttpHeaders headers, @PathParam("id") Long id, @Valid TableauBordRequest tableauBordRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete/{id}")
+ @Secured(action = "éditer", enable = true)
+ @LoggingInterceptorBinding(message = "Suppression du tableau de bord dont l'identifiant est {id}")
+ public Response delete(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("delete-user-tableaubord/{userName}")
+ @Secured(action = "éditer", enable = true)
+ public Response deleteUserTableauBord(@Context HttpHeaders headers, @PathParam("userName") String userName);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findbyid/{id}")
+ @Secured(actions = {"éditer"})
+ public Response findById(@Context HttpHeaders headers, @PathParam("id") Long id);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("findwithpagination/{pageNumber}/{pagesize}")
+ @Secured(actions = {"éditer"})
+ @LoggingInterceptorBinding(message = "Consultation des colonnes de recherche pour le tableau de bord dont associé au typefichier {code_type_fichier}", classe = TableauBordSlimDto.class)
+ public Response findWithPagination(@Context HttpHeaders headers, @PathParam("pageNumber") Integer pageNumber, @PathParam("pagesize") Integer pageSize, CriteriaFormRequest criteriaFormRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("count")
+ @Secured(actions = {"éditer"})
+ public Long count(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("search-columns")
+ @Secured(actions = {"éditer"})
+ public Response getSearchColumns(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Secured(actions = {"éditer"})
+ @Path("find-all")
+ public Response findAll(@Context HttpHeaders headers, CriteriaFormRequest criteriaFormRequest);
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/supervision/SupervisionRS.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/supervision/SupervisionRS.java
new file mode 100644
index 0000000..b9c4a5d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/supervision/SupervisionRS.java
@@ -0,0 +1,45 @@
+package com.megatim.fdxconsultation.service.ifaces.supervision;
+
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardRequest;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import com.mgt.rs.security.core.common.Secured;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface SupervisionRS {
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("data")
+ @Secured(action = "Suivi des échanges", enable = true)
+ public Response supervisionData(@Context HttpHeaders headers, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest);
+
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("standalone-state")
+ @Secured(action = "Paramètres", enable = true)
+ public Response standaloneState(@Context HttpHeaders headers);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("dashboard")
+ @Secured(action = "Tableau bord activités", enable = true)
+ public Response dashboard(@Context HttpHeaders headers, StandaloneDashboardRequest standaloneDashboardRequest);
+
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("filter")
+ @Secured(action = "Suivi des échanges", enable = true)
+ public Response filterTransferts(@Context HttpHeaders headers, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest);
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/timer/processor/DeleteDataProductionJob.java b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/timer/processor/DeleteDataProductionJob.java
new file mode 100644
index 0000000..3b03d0a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-ifaces/src/main/java/com/megatim/fdxconsultation/service/ifaces/timer/processor/DeleteDataProductionJob.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.fdxconsultation.service.ifaces.timer.processor;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DeleteDataProductionJob {
+ void delete() throws Exception;
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/.gitignore b/fdx-consultation/fdxconsultation-service-impl/.gitignore
new file mode 100644
index 0000000..b24d71e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/.gitignore
@@ -0,0 +1,50 @@
+# These are some examples of commonly ignored file patterns.
+# You should customize this list as applicable to your project.
+# Learn more about .gitignore:
+# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
+
+# Node artifact files
+node_modules/
+dist/
+
+# Compiled Java class files
+*.class
+
+# Compiled Python bytecode
+*.py[cod]
+
+# Log files
+*.log
+
+# Package files
+*.jar
+
+# Maven
+target/
+dist/
+
+# JetBrains IDE
+.idea/
+
+# Unit test reports
+TEST*.xml
+
+# Generated by MacOS
+.DS_Store
+
+# Generated by Windows
+Thumbs.db
+
+# Applications
+*.app
+*.exe
+*.war
+
+# Large media files
+*.mp4
+*.tiff
+*.avi
+*.flv
+*.mov
+*.wmv
+
diff --git a/fdx-consultation/fdxconsultation-service-impl/nb-configuration.xml b/fdx-consultation/fdxconsultation-service-impl/nb-configuration.xml
new file mode 100644
index 0000000..d7fafee
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/nb-configuration.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion>1.8-web</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion>
+ <org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>WildFly</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>
+ <org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>ide</org-netbeans-modules-maven-jaxws.rest_2e_config_2e_type>
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/fdxconsultation-service-impl/pom.xml b/fdx-consultation/fdxconsultation-service-impl/pom.xml
new file mode 100644
index 0000000..0320f3e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/pom.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <artifactId>fdxconsultation</artifactId>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.service.impl</groupId>
+ <artifactId>fdxconsultation-service-impl</artifactId>
+ <version>1.0</version>
+ <packaging>war</packaging>
+
+ <name>fdxconsultation-service-impl</name>
+
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <failOnMissingWebXml>false</failOnMissingWebXml>
+ <jakartaee>8.0</jakartaee>
+
+ <!-- <serveur.jboss.repertoire.deploiement.war>
+ C:\wildfly\standalone\deployments\fdxconsultation-service-impl-1.0.war
+ </serveur.jboss.repertoire.deploiement.war>
+ <repertoire.target.generation.war>
+ C:\Users\Gabuntu\Documents\NetBeansProjects\share_sources\fdx-consultation\fdxconsultation-service-impl\target\fdxconsultation-service-impl-1.0.war
+ </repertoire.target.generation.war>-->
+<!-- <serveur.jboss.repertoire.deploiement.war>C:\Users\serge\Documents\donnees\serveurs\wildfly-17.0.0.Final-fdx-consultation-local\standalone\deployments\fdxconsultation-service-impl-1.0.war</serveur.jboss.repertoire.deploiement.war>
+ <repertoire.target.generation.war>C:\sources\share_sources\fdx-consultation\fdxconsultation-service-impl\target\fdxconsultation-service-impl-1.0.war</repertoire.target.generation.war>-->
+ <serveur.jboss.repertoire.deploiement.war>D:\wildfly-17.0.0.Final-web-local\standalone\deployments\fdxconsultation-service-impl-1.0.war</serveur.jboss.repertoire.deploiement.war>
+ <repertoire.target.generation.war>C:\Users\ASUS\Documents\NetBeansProjects\share_sources\fdx-consultation\fdxconsultation-service-impl\target\fdxconsultation-service-impl-1.0.war</repertoire.target.generation.war><!--
+ -->
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.service.ifaces</groupId>
+ <artifactId>fdxconsultation-service-ifaces</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>rs-security-core</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.core.impl</groupId>
+ <artifactId>fdxconsultation-core-impl</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.model</groupId>
+ <artifactId>fdxconsultation-model</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.chat</groupId>
+ <artifactId>application-chat-service-impl-dependency</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.12.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.aether</groupId>
+ <artifactId>aether-api</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.11.0</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.1</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArguments>
+ <endorseddirs>${endorsed.dir}</endorseddirs>
+ </compilerArguments>
+ <!--<annotationProcessorPaths>
+ <path>
+ <groupId>org.mapstruct</groupId>
+ <artifactId>mapstruct-processor</artifactId>
+ <version>1.5.3.Final</version>
+ </path>
+ <path>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.18.22</version>
+ </path>
+ </annotationProcessorPaths>-->
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.6</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.8</version>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${endorsed.dir}</outputDirectory>
+ <silent>true</silent>
+ <artifactItems>
+ <artifactItem>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>${jakartaee}</version>
+ <type>jar</type>
+ </artifactItem>
+ </artifactItems>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Ant run maven plugin -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <id>mkdir-files-artifact-repo</id>
+ <phase>install</phase>
+ <configuration>
+ <tasks>
+ <delete file="${serveur.jboss.repertoire.deploiement.war}"/>
+ <copy file="${repertoire.target.generation.war}"
+ tofile="${serveur.jboss.repertoire.deploiement.war}"/>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/JAXRSConfiguration.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/JAXRSConfiguration.java
new file mode 100644
index 0000000..0078ef4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/JAXRSConfiguration.java
@@ -0,0 +1,13 @@
+package com.megatim.fdxconsultation.service.impl;
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+/**
+ * Configures JAX-RS for the application.
+ * @author Leonel FOFOU
+ */
+@ApplicationPath("fdx-consultation")
+public class JAXRSConfiguration extends Application {
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/Utils.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/Utils.java
new file mode 100644
index 0000000..e69583e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/Utils.java
@@ -0,0 +1,48 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.megatim.fdxconsultation.service.impl;
+
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import java.util.List;
+
+/**
+ *
+ * @author bissey
+ */
+public class Utils {
+
+ /**
+ * On injecte un Gestionnaire d'entites
+ *
+ */
+
+ public static final String MODULE_MEDIAS = "Medias";
+
+
+ public static List<Role> removeRoleAdmin(List<Role> roles) {
+
+ //Si non vide
+ if (roles != null) {
+ roles.removeIf(r -> (r.getAdmin()));
+ roles.removeIf(r -> (r.getMegaAdmin()));
+ roles.removeIf(r -> (r.getSuperAdmin()));
+ }
+ return roles;
+ }
+
+ public static List<User> removeUserAdmin(List<User> users) {
+
+ //Si non vide
+ if (users != null) {
+ users.removeIf(u -> (u.getUserName().equals("adminc")));
+ users.removeIf(u -> (u.getUserName().equals("adminv")));
+ users.removeIf(u -> (u.getUserName().equals("admin")));
+ }
+ return users;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalActionUtilisateurRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalActionUtilisateurRSImpl.java
new file mode 100644
index 0000000..dbda0a3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalActionUtilisateurRSImpl.java
@@ -0,0 +1,221 @@
+package com.megatim.fdxconsultation.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.JournalActionUtilisateurManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.JournalActionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalActionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.JournalActionUtilisateurDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.administration.JournalActionUtilisateurRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ * REST Web Service
+ *
+ * @author ABEGA
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Journal des actions utilisateur", description = "Journal des actions utilisateur")
+@SecuredAdmin(action = {"exporter"})
+@SecuredSuperAdmin(action = {"exporter"})
+@SecuredMegaAdmin(action = {"exporter"})
+@Path("journalactionutilisateur")
+@Dependent
+public class JournalActionUtilisateurRSImpl implements JournalActionUtilisateurRS {
+
+ @Inject
+ protected JournalActionUtilisateurManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ protected UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public JournalActionUtilisateurRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public JournalActionUtilisateurDto mapToDto(JournalActionUtilisateur entity) {
+ return mapstructMapper.journalActionUtilisateurToJournalActionUtilisateurDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(JournalActionUtilisateur.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<JournalActionUtilisateur> data = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapstructMapper.journalActionUtilisateurListToJournalActionUtilisateurgDtoList(data)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ JournalActionUtilisateur datum = manager.findById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(JournalActionUtilisateurReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList())).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ /**
+ * Methode permettant d'ajouter critères des recherches fixes
+ *
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add( newCriteriaEntityFromView("relativePath", "/auth/login", Operateur.NOT_EQUALS));
+ finalCriterion.getSubCriterias().add( newCriteriaEntityFromView("relativePath", "/auth/logout", Operateur.NOT_EQUALS));
+
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+ 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;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalConnexionUtilisateurRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalConnexionUtilisateurRSImpl.java
new file mode 100644
index 0000000..2609915
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/JournalConnexionUtilisateurRSImpl.java
@@ -0,0 +1,220 @@
+package com.megatim.fdxconsultation.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.JournalConnexionUtilisateurManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.JournalConnexionUtilisateur;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalConnexionUtilisateurReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.JournalConnexionUtilisateurDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.administration.JournalConnexionUtilisateurRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ * REST Web Service
+ *
+ * @author ABEGA
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Journal des connexions utilisateur", description = "Journal des connexions utilisateur")
+@SecuredAdmin(action = {"exporter"})
+@SecuredSuperAdmin(action = {"exporter"})
+@SecuredMegaAdmin(action = {"exporter"})
+@Path("journalconnexionutilisateur")
+@Dependent
+public class JournalConnexionUtilisateurRSImpl implements JournalConnexionUtilisateurRS {
+
+ @Inject
+ protected JournalConnexionUtilisateurManager manager;
+
+ @Inject
+ protected UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public JournalConnexionUtilisateurRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public JournalConnexionUtilisateurDto mapToDto(JournalConnexionUtilisateur entity) {
+ return mapstructMapper.journalConnexionUtilisateurToJournalConnexionUtilisateurDto(entity);
+ }
+
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(JournalConnexionUtilisateur.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<JournalConnexionUtilisateur> data = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapstructMapper.journalConnexionUtilisateurListToJournalConnexionUtilisateurDtoList(data)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ JournalConnexionUtilisateur datum = manager.findById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(JournalConnexionUtilisateurReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList())).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ /**
+ * Methode permettant d'ajouter critères des recherches fixes
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView tmpCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ tmpCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.OR);
+ tmpCriterion.getSubCriterias().add(newCriteriaEntityFromView("relativePath", "/auth/login", Operateur.LIKE));
+ tmpCriterion.getSubCriterias().add(newCriteriaEntityFromView("relativePath", "/auth/logout", Operateur.LIKE));
+ finalCriterion.getSubCriterias().add(tmpCriterion);
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+ 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;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleRSImpl.java
new file mode 100644
index 0000000..d65df5c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleRSImpl.java
@@ -0,0 +1,270 @@
+package com.megatim.fdxconsultation.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.ActionManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.reporting.model.administration.RoleReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.formodel.RoleFormModel;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.administration.RoleRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ * REST Web Service
+ *
+ * @author ABEGA
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Groupes utilisateurs", description = "Groupes utilisateurs")
+@SecuredAdmin(action = {"ajouter", "modifier", "supprimer", "exporter"})
+@SecuredMegaAdmin(action = {"ajouter", "modifier", "supprimer", "exporter"})
+@Path("role")
+public class RoleRSImpl implements RoleRS {
+
+ @Inject
+ private RoleManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private ActionManager actionManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ private com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public RoleRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, Role entity) {
+ Role newEntity = manager.add(entity, utilisateurConnecte);
+ return Response.ok(manager.mapToDto(newEntity)).build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, Long id, Role entity) {
+ Role newEntity = manager.modify(id, entity, utilisateurConnecte);
+ return Response.ok(manager.mapToDto(newEntity)).build();
+ }
+
+ @Override
+ public Response delete(HttpHeaders headers, Long id) {
+ manager.remove(id, utilisateurConnecte);
+ return Response.ok().build();
+ }
+
+ @Override
+ public RoleDto mapToDto(Role entity) {
+ return mapstructMapper.roleToRoleDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Role.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Role> datas = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapstructMapper.roleListToRoleDtoList(datas)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ RoleDto datum = manager.getById(id);
+ return Response.ok(datum).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ Role entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export pdf détail groupe utilisateur : " + entite.getLibelle() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(RoleReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Role entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export excel détail groupe utilisateur : " + entite.getLibelle() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest), Arrays.asList(), Arrays.asList())).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getFormModel(@Context HttpHeaders headers) {
+ RoleFormModel formModel = new RoleFormModel();
+ formModel.setActions(mapstructMapper.actionSlimDtos(actionManager.findAll()));
+ return Response.ok(formModel).build();
+ }
+
+ @Override
+ public Response getFormModelUpdate(@Context HttpHeaders headers) {
+ RoleFormModel formModel = new RoleFormModel();
+ formModel.setActions(mapstructMapper.actionSlimDtos(actionManager.findAll()));
+ return Response.ok(formModel).build();
+ }
+
+ /**
+ * Methode permettant d'ajouter critères de recherches fixes
+ *
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView critere = new CriteriaEntityFromView();
+ CriteriaEntityFromView critere2 = new CriteriaEntityFromView();
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeOperation", TypeOperation.AJOUTER, Operateur.EQUALS));
+ critere.setCriteriaLogicConnector(CriteriaLogicConnector.OR);
+ critere.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ACTIF, Operateur.EQUALS));
+ critere.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ATTENTE_VALIDATION, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(critere);
+ critere2.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("admin", Boolean.FALSE, Operateur.EQUALS));
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("superAdmin", Boolean.FALSE, Operateur.EQUALS));
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("megaAdmin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(critere2);
+
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+ 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;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleValidationRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleValidationRSImpl.java
new file mode 100644
index 0000000..15d1664
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/RoleValidationRSImpl.java
@@ -0,0 +1,260 @@
+/*
+ * 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.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.core.ifaces.administration.ActionManager;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.reporting.model.administration.RoleReporting;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.formodel.RoleFormModel;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.administration.RoleValidationRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.event.Observes;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Validation des groupes utilisateurs", description = "Validation des groupes utilisateurs")
+@SecuredSuperAdmin(action = {"valider", "rejeter", "exporter"})
+@SecuredMegaAdmin(action = {"valider", "rejeter", "exporter"})
+@Path("role-validation")
+public class RoleValidationRSImpl implements RoleValidationRS {
+
+ @Inject
+ protected RoleManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private ActionManager actionManager;
+
+ @Inject
+ protected UserManager userManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public void validate(@Context HttpHeaders headers, @PathParam("name") String name) {
+ manager.validate(name, utilisateurConnecte);
+ }
+
+ @Override
+ public void reject(HttpHeaders headers, @PathParam("name") String name, Role role) {
+ manager.reject(name, role, utilisateurConnecte);
+ }
+
+ @Override
+ public RoleDto mapToDto(Role entity) {
+ return mapstructMapper.roleToRoleDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Role.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Role> datas = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ datas = manager.formaterDonnees(datas);
+ return Response.ok(mapstructMapper.roleListToRoleDtoList(datas)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ RoleDto datum = manager.getById(id);
+ return Response.ok(datum).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ Role entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export pdf détail groupe utilisateur (validation) : " + entite.getLibelle() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(RoleReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Role entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export excel détail groupe utilisateur (validation) : " + entite.getLibelle() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Role> datas = manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest), Arrays.asList(), Arrays.asList());
+ datas = manager.formaterDonnees(datas);
+ return Response.ok(datas).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getFormModel(@Context HttpHeaders headers) {
+ RoleFormModel formModel = new RoleFormModel();
+ formModel.setActions(mapstructMapper.actionSlimDtos(actionManager.findAll()));
+ return Response.ok(formModel).build();
+ }
+
+ @Override
+ public Response getFormModelUpdate(@Context HttpHeaders headers) {
+ RoleFormModel formModel = new RoleFormModel();
+ formModel.setActions(mapstructMapper.actionSlimDtos(actionManager.findAll()));
+ return Response.ok(formModel).build();
+ }
+
+ /**
+ * Methode permettant d'ajouter critères de recherches fixes
+ *
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeOperation", TypeOperation.AJOUTER, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ATTENTE_VALIDATION, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("admin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("superAdmin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("megaAdmin", Boolean.FALSE, Operateur.EQUALS));
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+
+ 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;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserRSImpl.java
new file mode 100644
index 0000000..fdb3727
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserRSImpl.java
@@ -0,0 +1,269 @@
+package com.megatim.fdxconsultation.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.administration.UserReporting;
+import com.megatim.fdxconsultation.model.dto.EditPasswordDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.administration.UserRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+/**
+ * REST Web Service
+ *
+ * @author ABEGA
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Utilisateurs", description = "Utilisateurs")
+@SecuredAdmin(action = {"ajouter", "modifier", "supprimer", "exporter"})
+@SecuredMegaAdmin(action = {"ajouter", "modifier", "supprimer", "exporter"})
+@Path("user")
+@Dependent
+public class UserRSImpl implements UserRS {
+
+ @Inject
+ private UserManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private RoleManager roleManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Context
+ private UriInfo context;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ public UserRSImpl() {
+ super();
+ }
+
+ /**
+ * Methode permettant de recuperer l'utilisateur connecté
+ *
+ * @param username
+ */
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = manager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, User entity) {
+ User newEntity = manager.add(entity, utilisateurConnecte);
+ return Response.ok(manager.mapToDto(newEntity)).build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, Long id, User entity) {
+ User newEntity = manager.modify(id, entity, utilisateurConnecte);
+ return Response.ok(manager.mapToDto(newEntity)).build();
+ }
+
+ @Override
+ public Response delete(HttpHeaders headers, Long id) {
+ manager.remove(id, utilisateurConnecte);
+ return Response.ok().build();
+ }
+
+ @Override
+ public Response editPassword(HttpHeaders headers, String username, EditPasswordDto editPasswordDto) {
+ manager.editPassword(username, editPasswordDto);
+ return Response.ok().build();
+ }
+
+ @Override
+ public UserDto mapToDto(User entity) {
+ return mapstructMapper.userToUserDto(entity);
+ }
+
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(User.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<User> data = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapstructMapper.userListToUserDtoList(data)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ UserDto datum = manager.getById(id);
+ return Response.ok(datum).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ User entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export pdf détail compte utilisateur : "+entite.getUserName()+" (id="+entite.getId()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(UserReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ User entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export excel détail compte utilisateur : "+entite.getUserName()+" (id="+entite.getId()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList())).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ /**
+ * Methode permettant d'ajouter critères de recherches fixes
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView critere = new CriteriaEntityFromView();
+ CriteriaEntityFromView critere2 = new CriteriaEntityFromView();
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeOperation", TypeOperation.AJOUTER, Operateur.EQUALS));
+ critere.setCriteriaLogicConnector(CriteriaLogicConnector.OR);
+ critere.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ACTIF, Operateur.EQUALS));
+ critere.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ATTENTE_VALIDATION, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(critere);
+ critere2.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("role.admin", Boolean.FALSE, Operateur.EQUALS));
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("role.superAdmin", Boolean.FALSE, Operateur.EQUALS));
+ critere2.getSubCriterias().add(newCriteriaEntityFromView("role.megaAdmin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(critere2);
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+ 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;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserValidationRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserValidationRSImpl.java
new file mode 100644
index 0000000..d0c0dce
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/administration/UserValidationRSImpl.java
@@ -0,0 +1,230 @@
+package com.megatim.fdxconsultation.service.impl.administration;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.reporting.model.administration.UserReporting;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.mgt.rs.security.core.common.SecuredClass;
+import com.mgt.rs.security.core.common.SecuredSuperAdmin;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import javax.enterprise.event.Observes;
+import javax.ws.rs.core.Response;
+import com.megatim.fdxconsultation.service.ifaces.administration.UserValidationRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.SecuredMegaAdmin;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Validation des utilisateurs", description = "Validation des utilisateurs")
+@SecuredSuperAdmin(action = {"valider", "rejeter", "exporter"})
+@SecuredMegaAdmin(action = {"valider", "rejeter", "exporter"})
+@Path("user-validation")
+public class UserValidationRSImpl implements UserValidationRS {
+
+ @Inject
+ protected UserManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ public UserValidationRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = manager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public void validate(@Context HttpHeaders headers, @PathParam("username") String username) {
+ manager.validate(username, utilisateurConnecte);
+ }
+
+ @Override
+ public void reject(@Context HttpHeaders headers, @PathParam("username") String username, User entity) {
+ manager.reject(username, entity, utilisateurConnecte);
+ }
+
+ @Override
+ public UserDto mapToDto(User entity) {
+ return mapstructMapper.userToUserDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(User.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<User> data = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest), Arrays.asList(),
+ Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapstructMapper.userListToUserDtoList(data)).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ UserDto datum = manager.getById(id);
+ return Response.ok(datum).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ User entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export pdf détail compte utilisateur : " + entite.getUserName() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(UserReporting.class);
+ return Response.ok(mapstructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ User entite = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export excel détail compte utilisateur : " + entite.getUserName() + " (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest), Arrays.asList(), Arrays.asList())).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ /**
+ * Methode permettant d'ajouter critères de recherches fixes
+ *
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("typeOperation", TypeOperation.AJOUTER, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("etatOperation", EtatOperation.ATTENTE_VALIDATION, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("role.admin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("role.superAdmin", Boolean.FALSE, Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("role.megaAdmin", Boolean.FALSE, Operateur.EQUALS));
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+
+ 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;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/api/token/ApiTokenRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/api/token/ApiTokenRSImpl.java
new file mode 100644
index 0000000..3c0e7c7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/api/token/ApiTokenRSImpl.java
@@ -0,0 +1,268 @@
+package com.megatim.fdxconsultation.service.impl.api.token;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.api.token.ApiTokenManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.model.dto.ApiTokenDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.api.token.ApiTokenReporting;
+import com.megatim.fdxconsultation.service.ifaces.api.token.ApiTokenRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = AppCommonContext.PATH_API_TOKEN, description = AppCommonContext.PATH_API_TOKEN)
+@Path("token-management")
+public class ApiTokenRSImpl implements ApiTokenRS {
+
+ @Inject
+ private ApiTokenManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ private MapStructMapper mapStructMapper;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public ApiTokenDto mapToDto(ApiToken entity) {
+ return mapStructMapper.apiTokenToApiTokenDto(entity);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, ApiToken entity) {
+ String token = manager.addAndGetToken(entity, utilisateurConnecte);
+ File tokenFile = writeToken(token, entity.getParticipant().getCode());
+ Response.ResponseBuilder response = Response.ok((Object) tokenFile);
+ response.header("Content-Disposition", "attachment;filename=" + tokenFile.getName());
+ return response.build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, Long id, ApiToken entity) {
+ String token = manager.updateAndGetToken(id, entity, utilisateurConnecte);
+ File tokenFile = writeToken(token, entity.getParticipant().getCode());
+ Response.ResponseBuilder response = Response.ok((Object) tokenFile);
+ response.header("Content-Disposition", "attachment;filename=" + tokenFile.getName());
+ return response.build();
+ }
+
+ @Override
+ public Response delete(HttpHeaders headers, Long id) {
+ manager.remove(id, utilisateurConnecte);
+ return Response.ok().build();
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ ApiToken apiToken = manager.find(manager.getEntityIdName(), id);
+ return Response.ok(mapToDto(apiToken)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)))).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(criteriaFormRequest);
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(ApiTokenRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(ApiToken.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<ApiToken> datas = manager.findWithPagination(ajoutDesCriteresFixesDeRecherche(criteriaFormRequest),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pagesize);
+ return Response.ok(mapStructMapper.apiTokenListToApiTokenDtoList(datas)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ApiTokenRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ private File writeToken(String token, String codeParticipant) {
+ File tokenFile = new File(AppCommonContext.APP_DIR + File.separator + "TOKEN-" + codeParticipant + new Date().getTime() + ".token");
+ try ( FileWriter writer = new FileWriter(tokenFile)) {
+ writer.write(token);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return tokenFile;
+ }
+
+ @Override
+ public Response lock(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id) {
+ ApiToken apiToken = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Mot de passe API désactivé, pour le participant : " + apiToken.getParticipant().getCode(),
+ utilisateurConnecte.getUserName());
+ return Response.ok(mapToDto(manager.lock(id, utilisateurConnecte))).build();
+ }
+
+ @Override
+ public Response unLock(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id) {
+ ApiToken apiToken = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Mot de passe API désactivé, pour le participant : " + apiToken.getParticipant().getCode(),
+ utilisateurConnecte.getUserName());
+ return Response.ok(mapToDto(manager.unLock(id, utilisateurConnecte))).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ApiToken apiToken = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export pdf détail mot de passe API, pour le participant : " + apiToken.getParticipant().getCode(),
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(ApiTokenReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ CriteriaEntityFromView criterion = ajoutDesCriteresFixesDeRecherche(reportConfiguration.getSearchEntity());
+ reportConfiguration.setSearchEntity(new CriteriaFormRequest(criterion));
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ApiToken apiToken = manager.find(manager.getEntityIdName(), id);
+ userActionLogManager.log(headers, request, "Export excel détail mot de passe API, pour le participant : " + apiToken.getParticipant().getCode(),
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ /**
+ * Methode permettant d'ajouter critères de recherches fixes
+ *
+ * @param criteriaFormRequest
+ * @return
+ */
+ private CriteriaEntityFromView ajoutDesCriteresFixesDeRecherche(CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ CriteriaEntityFromView critere = new CriteriaEntityFromView();
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+
+ if (utilisateurConnecte != null
+ && (utilisateurConnecte.getParticipants() != null && !utilisateurConnecte.getParticipants().isEmpty())) {
+ for (Participant paticipant : utilisateurConnecte.getParticipants()) {
+ critere.setCriteriaLogicConnector(CriteriaLogicConnector.OR);
+ critere.getSubCriterias().add(newCriteriaEntityFromView("participant.code", paticipant.getCode(), Operateur.EQUALS));
+ }
+ finalCriterion.getSubCriterias().add(critere);
+ }
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+ 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;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/authentication/AuthenticationRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/authentication/AuthenticationRSImpl.java
new file mode 100644
index 0000000..14f594d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/authentication/AuthenticationRSImpl.java
@@ -0,0 +1,177 @@
+package com.megatim.fdxconsultation.service.impl.authentication;
+
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.core.ifaces.administration.ActionManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.RequestHandler;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.authentification.LoginRequest;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.authentication.AuthenticationRS;
+import com.megatim.retrocedor.commons.tools.CommonsTools;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.exception.AuthenticationException;
+import com.mgt.rs.security.core.model.AuthenticationToken;
+import com.mgt.rs.security.core.service.AuthenticationTokenService;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+@Path("auth")
+public class AuthenticationRSImpl implements AuthenticationRS {
+
+ @Inject
+ private AuthenticationTokenService authenticationTokenService;
+
+ @Inject
+ protected UserManager userManager;
+
+ @Inject
+ UserActionLogManager userActionLogManager;
+
+ @Inject
+ protected RoleManager roleManager;
+
+ @Inject
+ private MapStructMapper mapstructMapper;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ protected ActionManager actionManager;
+
+ @Inject
+ private RequestHandler requestHandler;
+
+ /**
+ * Methode permettant de recupere l'utilisateur connecté
+ *
+ * @param username
+ */
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ /**
+ * Validate user credentials and issue a token for the user.
+ *
+ * @param loginRequest
+ * @return
+ */
+ @Override
+ public Response authenticate(LoginRequest loginRequest) {
+ User user = validateCredentials(loginRequest.getUserName(), loginRequest.getPwd());
+ String token = authenticationTokenService.issueToken(user.getUserName());
+ String refreshToken = authenticationTokenService.issueRefreshToken(user.getUserName());
+ AuthenticationToken authenticationToken = new AuthenticationToken();
+ authenticationToken.setToken(token);
+ authenticationToken.setRefreshToken(refreshToken);
+ user.setLastConnexionDateTime(new Date());
+ user.setCleSession(CommonsTools.formaterDate(AppContext.FORMAT_DATE_DDMMYYYYHHMMSS, new Date()));
+ user.setConnected(true);
+ userManager.update(user.getId(), user);
+ return Response.ok(authenticationToken).build();
+ }
+
+ /**
+ * Validate username and password.
+ *
+ * @param username
+ * @param password
+ * @return
+ */
+ public User validateCredentials(String username, String password) {
+
+ //Variables
+ List<String> errors = new ArrayList<>();
+ User user = null;
+
+ //On recupère les erreurs
+ errors = userManager.validerParametresConnexion(username, password);
+
+ //Si non vide
+ if(!errors.isEmpty()){
+
+ //On lève l'execption
+ throw new AuthenticationException(errors.get(0));
+
+ }
+
+ //On recupère l'utilisateur connecté
+ user = userManager.recuperUtilisateur(username, password);
+
+ return user;
+ }
+
+ @Override
+ public Response getInfoUser(HttpHeaders headers) {
+ return Response.ok(mapstructMapper.userToUserDto(utilisateurConnecte)).build();
+ }
+
+ @Override
+ public Response ifUserNameExist(HttpHeaders headers, String username) {
+ User user = userManager.recuperUtilisateur(username);
+ return Response.ok(mapstructMapper.userToUserDto(user)).build();
+ }
+
+ @Override
+ public Response logout(HttpHeaders headers, User user) {
+ User userBd = userManager.findById(user.getId());
+ userBd.setConnected(false);
+ userManager.update(userBd.getId(), userBd);
+ return Response.ok().build();
+ }
+
+ @Override
+ public Response generateDataTotTest(HttpHeaders headers) {
+
+ String userName = "test";
+ User testUser = userManager.recuperUtilisateur(userName);
+
+ boolean isUpdate = testUser != null;
+ if (testUser == null) {
+ testUser = new User();
+ }
+ testUser.setUserName(userName);
+ testUser.setPwd(CommonsTools.encryptPassword(userName));
+
+ Role role = new Role();
+ role.setLibelle("test");
+ role.setDescription("test");
+
+ List<Action> actions = actionManager.findAll();
+ if (actions != null && !actions.isEmpty()) {
+
+ List<Role> roles = roleManager.findByUniqueProperty("libelle", role.getLibelle(), null);
+ if (roles != null && !roles.isEmpty()) {
+ role = roles.get(0);
+ role.setActions(actions);
+ roleManager.update(role.getId(), role);
+ } else {
+ role.setActions(actions);
+ role = roleManager.save(role);
+ }
+ testUser.setRole(role);
+ }
+
+ //On recupère le user
+ User updatedTestUser = (!isUpdate) ? userManager.save(testUser) : userManager.update(testUser.getId(), testUser);
+
+ return Response.ok(mapstructMapper.userToUserDto(updatedTestUser)).build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/CamelBootstrap.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/CamelBootstrap.java
new file mode 100644
index 0000000..2bb699b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/CamelBootstrap.java
@@ -0,0 +1,78 @@
+package com.megatim.fdxconsultation.service.impl.camel;
+
+import com.megatim.fdxcommons.model.camel.BrokerProperties;
+import com.megatim.fdxcommons.model.camel.FileProperties;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import org.apache.camel.cdi.CdiCamelConfiguration;
+import org.apache.camel.cdi.CdiCamelContext;
+import org.apache.camel.component.rabbitmq.RabbitMQComponent;
+
+@Singleton
+@Startup
+public class CamelBootstrap {
+
+ @Inject
+ private CdiCamelContext camelContext;
+
+ @PostConstruct
+ public void init() {
+ try {
+ FileProperties fileProperties = new FileProperties(com.megatim.fdxcommons.tools.context.AppContext.BROKER_FILE_PATH);
+
+ // Add RabbitMQ Component with connection details
+ RabbitMQComponent rabbitMQComponent = new RabbitMQComponent();
+ rabbitMQComponent.setHostname(brokerHostName(fileProperties));
+ rabbitMQComponent.setPortNumber(brokerPortNumber(fileProperties));
+ rabbitMQComponent.setUsername(brokerUserName(fileProperties));
+ rabbitMQComponent.setPassword(brokerPassword(fileProperties));
+
+ camelContext.addComponent("rabbitmq", rabbitMQComponent);
+
+ camelContext.start();
+ } catch (IOException ex) {
+ Logger.getLogger(CamelBootstrap.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+
+ public static void configuration(@Observes CdiCamelConfiguration configuration) {
+
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+
+ System.out.println("INSIDE CONFIGURE OF ROUTE");
+
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+ System.out.println("<-------------------------------------------------------------------------------------------->");
+
+// configuration.autoConfigureRoutes(false);
+ configuration.autoStartContexts(false);
+ }
+
+ private String brokerHostName(FileProperties fileProperties) throws IOException {
+ return fileProperties.properties().getProperty(BrokerProperties.HOSTNAME);
+ }
+
+ private int brokerPortNumber(FileProperties fileProperties) throws IOException {
+ return Integer.parseInt(fileProperties.properties().getProperty(BrokerProperties.PORT_NUMBER));
+ }
+
+ private String brokerUserName(FileProperties fileProperties) throws IOException {
+ return fileProperties.properties().getProperty(BrokerProperties.USER_NAME);
+ }
+
+ private String brokerPassword(FileProperties fileProperties) throws IOException {
+ return fileProperties.properties().getProperty(BrokerProperties.PASSWORD);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ApiUserActionLogConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ApiUserActionLogConsumer.java
new file mode 100644
index 0000000..a271884
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ApiUserActionLogConsumer.java
@@ -0,0 +1,29 @@
+/*
+ * 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.service.impl.camel.consumer;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.core.ifaces.log.ApiUserActionLogManager;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import javax.inject.Inject;
+import org.apache.camel.Handler;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ApiUserActionLogConsumer {
+
+ @Inject
+ private ApiUserActionLogManager apiLogManager;
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Handler
+ public void process(UserActionLog log) throws Exception {
+ apiLogManager.save(mapper.userActionLogToApiUserActionLog(log));
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ConnexionStatutConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ConnexionStatutConsumer.java
new file mode 100644
index 0000000..e9bfce9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ConnexionStatutConsumer.java
@@ -0,0 +1,23 @@
+package com.megatim.fdxconsultation.service.impl.camel.consumer;
+
+import com.fdx.messaging.common.ConnexionStatutMessages;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.ConnexionStatutSessionHandler;
+import javax.inject.Inject;
+import org.apache.camel.Handler;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ConnexionStatutConsumer {
+
+ @Inject
+ private ConnexionStatutSessionHandler connexionStatutSessionHandler;
+
+ @Handler
+ public void process(ConnexionStatutMessages connexionStatutMessages) throws Exception {
+ connexionStatutMessages.getConnexionStatuts().forEach(c -> System.out.println(c.getAgentCode() + " " + c.isConnected()));
+ connexionStatutSessionHandler.publishMessage(connexionStatutMessages.getConnexionStatuts());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ProductionMetaDaConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ProductionMetaDaConsumer.java
new file mode 100644
index 0000000..40bd770
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ProductionMetaDaConsumer.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.service.impl.camel.consumer;
+
+import com.megatim.fdxcommons.model.dataproduction.metadata.ProductionMetaData;
+import com.megatim.fdxcommons.model.dtos.dataproduction.ProductionMetaDataDto;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import javax.inject.Inject;
+import org.apache.camel.Handler;
+import com.megatim.fdxconsultation.dao.impl.dataproduction.metadata.CreateDataProductionQuery;
+import com.megatim.fdxconsultation.dao.impl.dataproduction.metadata.CreateProductionMetaDataQuery;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ProductionMetaDaConsumer {
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ private com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Handler
+ public void saveData(ProductionMetaDataDto dto) throws Exception {
+ System.out.println("----------------In ProductionMetaDaConsumer--------------------");
+ DataProduction dataProduction = mapper.commonDataProductionDtoToDataProduction(dto.getDataProduction());
+ dataProduction.setId(dto.getDataProduction().getId());
+ dataProduction.setStatutDataProduction(StatutDataProduction.ENCOURS_DE_CONSOMMATION);
+ System.out.println("------------ NbreElts " + dataProduction.getNbreElements() + ", FileName = " + dataProduction.getFileName() + ", IntegrationFileName = " + dataProduction.getIntegrationFileName());
+
+ ProductionMetaData pmd = commonMapper.productionMetaDataDtoToProductionMetaData(dto);
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ new CreateDataProductionQuery(dataProduction, connection).execute();
+ new CreateProductionMetaDataQuery(pmd, dataProduction.getDataProductionType(), connection).execute();
+
+ connection.commit();
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ReferentielDataConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ReferentielDataConsumer.java
new file mode 100644
index 0000000..dc8b68c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/ReferentielDataConsumer.java
@@ -0,0 +1,24 @@
+package com.megatim.fdxconsultation.service.impl.camel.consumer;
+
+import com.megatim.fdxcommons.core.ifaces.helper.ReferentielConsumptionHelper;
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import org.apache.camel.Handler;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ReferentielDataConsumer {
+
+ @Inject
+ private ReferentielConsumptionHelper referentielConsumptionHelper;
+
+ @Handler
+ @Transactional
+ public void consumeReferentiel(ReferentielToImportData referentielToImportData) throws Exception {
+ //On consomme le référentiel
+ referentielConsumptionHelper.consume(referentielToImportData);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/StandaloneServerStateConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/StandaloneServerStateConsumer.java
new file mode 100644
index 0000000..28a6a83
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/StandaloneServerStateConsumer.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxconsultation.service.impl.camel.consumer;
+
+import org.apache.camel.Handler;
+import com.fdx.messaging.common.StandaloneServerState;
+import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.StandaloneServerStateSessionHandler;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StandaloneServerStateConsumer {
+
+ @Inject
+ StandaloneServerStateEntityManager serverStateManager;
+
+ @Inject
+ private StandaloneServerStateSessionHandler standaloneServerStateSessionHandler;
+
+ @Handler
+ @Transactional
+ public void consume(StandaloneServerState serverState) {
+ StandaloneServerStateEntity standaloneServerStateEntity = serverStateManager.persistStandaloneConfigurationStateEntity(serverState);
+ if(standaloneServerStateEntity != null) {
+ standaloneServerStateSessionHandler.publishMessage(standaloneServerStateEntity);
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/TransfertDataMessageConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/TransfertDataMessageConsumer.java
new file mode 100644
index 0000000..f81077e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/TransfertDataMessageConsumer.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.service.impl.camel.consumer;
+
+import com.fdx.messaging.common.TransfertDataMessage;
+import com.megatim.fdxconsultation.core.ifaces.supervision.TransfertManager;
+import com.megatim.fdxconsultation.core.impl.api.supervision.TransfertDataMessageToTransfert;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.TransfertDataMessageSessionHandler;
+import javax.inject.Inject;
+import org.apache.camel.Handler;
+
+/**
+ *
+ * @author lenovo
+ */
+public class TransfertDataMessageConsumer {
+
+ @Inject
+ private TransfertManager transfertManager;
+
+ @Inject
+ private TransfertDataMessageSessionHandler transfertDataMessageSessionHandler;
+
+ @Handler
+ public void process(TransfertDataMessage transfertDataMessage) throws Exception {
+
+ Transfert transfert = new TransfertDataMessageToTransfert(transfertDataMessage).transfert();
+
+ transfertManager.persistTransfert(transfert);
+
+ transfertDataMessageSessionHandler.sendMessage(transfert);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/UserActionLogConsumer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/UserActionLogConsumer.java
new file mode 100644
index 0000000..3db32cd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/consumer/UserActionLogConsumer.java
@@ -0,0 +1,25 @@
+/*
+ * 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.service.impl.camel.consumer;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import javax.inject.Inject;
+import org.apache.camel.Handler;
+
+/**
+ *
+ * @author ASUS
+ */
+public class UserActionLogConsumer {
+
+ @Inject
+ private UserActionLogManager logManager;
+
+ @Handler
+ public void process(UserActionLog log) throws Exception {
+ logManager.save(log);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/UserActionsRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/UserActionsRoute.java
new file mode 100644
index 0000000..1328131
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/UserActionsRoute.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.UserActionLogConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class UserActionsRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("direct:" + AppCommonContext.WEB_USER_ACTION_DIRECT)
+ .marshal(JacksonMapperFormat.jacksonDataFormat(UserActionLog.class))
+ .to("rabbitmq:"
+ + AppCommonContext.WEB_USER_ACTION_EXCHANGE
+ + "?queue=" + AppCommonContext.WEB_USER_ACTION_QUEUE
+ + "&routingKey=" + AppCommonContext.WEB_USER_ACTION_ROUTING_KEY
+ + "&autoDelete=false");
+
+ from("rabbitmq:"
+ + AppCommonContext.WEB_USER_ACTION_EXCHANGE
+ + "?queue=" + AppCommonContext.WEB_USER_ACTION_QUEUE
+ + "&routingKey=" + AppCommonContext.WEB_USER_ACTION_ROUTING_KEY
+ + "&autoDelete=false")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(UserActionLog.class))
+ .bean(UserActionLogConsumer.class);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ApiUserActionsRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ApiUserActionsRoute.java
new file mode 100644
index 0000000..5eed155
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ApiUserActionsRoute.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.ApiUserActionLogConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ApiUserActionsRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("rabbitmq:"
+ + AppContext.USER_ACTION_TO_FDX_CONS_EXCHANGE
+ + "?queue=" + AppContext.USER_ACTION_TO_FDX_CONS_QUEUE
+ + "&routingKey=" + AppContext.USER_ACTION_TO_FDX_CONS_ROUTING_KEY
+ + "&autoDelete=false")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(UserActionLog.class))
+ .bean(ApiUserActionLogConsumer.class);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ConnectedStatutsRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ConnectedStatutsRoute.java
new file mode 100644
index 0000000..bb4c347
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ConnectedStatutsRoute.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.fdx.messaging.common.ConnexionStatutMessages;
+import com.fdx.messaging.common.FdxMessagingContext;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.ConnexionStatutConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class ConnectedStatutsRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("rabbitmq:"
+ + FdxMessagingContext.CONNECTED_NODE_EXCHANGE
+ + "?queue=" + FdxMessagingContext.CONNECTED_NODE_QUEUE
+ + "&routingKey=" + FdxMessagingContext.CONNECTED_NODE_ROUTING_KEY
+ + "&autoDelete=false&arg.queue.x-message-ttl=3000")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(ConnexionStatutMessages.class))
+ .log("${body}")
+ .bean(ConnexionStatutConsumer.class);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ProductionMetaDataRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ProductionMetaDataRoute.java
new file mode 100644
index 0000000..be08045
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ProductionMetaDataRoute.java
@@ -0,0 +1,98 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.megatim.fdxcommons.model.dtos.dataproduction.ProductionMetaDataDto;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.queries.EchecIntegrationQueries;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxconsultation.core.ifaces.integration.EchecIntegrationManager;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.ProductionMetaDaConsumer;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Resource;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jackson.JacksonDataFormat;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ProductionMetaDataRoute extends RouteBuilder {
+
+ @Inject
+ private EchecIntegrationManager echecIntegrationManager;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void configure() throws Exception {
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JavaTimeModule());
+ mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ JacksonDataFormat jacksonDataFormat = new JacksonDataFormat();
+ jacksonDataFormat.setObjectMapper(mapper);
+ jacksonDataFormat.setUnmarshalType(ProductionMetaDataDto.class);
+
+ onException(Exception.class)
+ .handled(false)
+ .log("Exception occured: ${exception.message}")
+ .logStackTrace(true)
+ .process(ex -> {
+ System.out.println("---------------------In Exception process----------------------------");
+ ProductionMetaDataDto dto = ex.getIn().getBody(ProductionMetaDataDto.class);
+
+ if (echecIntegrationManager.getById(dto.getDataProduction().getId()) == null) {
+ updateDb(dto);
+ }
+ })
+ .end();
+
+ from("rabbitmq:"
+ + AppContext.DATA_INTEGRATION_EXCHANGE
+ + "?queue=" + AppContext.DATA_INTEGRATION_QUEUE
+ + "&routingKey=" + AppContext.DATA_INTEGRATION_ROUTING_KEY
+ + "&autoDelete=false"
+ + "&autoAck=false")//Désactiver l'auto acquittement du message
+ // .log("************************In FdxConsultation*****************************")
+ .errorHandler(defaultErrorHandler()
+ .maximumRedeliveries(3)
+ .onExceptionOccurred(ex -> {
+ Throwable caused = ex.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
+ caused.printStackTrace();
+
+ }))
+ .unmarshal(jacksonDataFormat)
+ .log("------------------------------In ProductionMetaDataRoute-----------------------------------")
+ .bean(ProductionMetaDaConsumer.class);
+ }
+
+ private void updateDb(ProductionMetaDataDto dto) {
+ FdxConsultationTable consTable = new FdxConsultationTable(dto.getDataProduction().getCodeTypeFichier(), dto.getDataProduction().getReferentielVersion());
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+ connection.setAutoCommit(false);
+
+ consTable.removeUnCompleteData(connection, dto.getDataProduction().getId());
+ new EchecIntegrationQueries(connection, dto.getDataProduction().getId()).save();
+
+ connection.commit();
+
+ } catch (SQLException ex) {
+ Logger.getLogger(ProductionMetaDataRoute.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ } catch (Exception ex) {
+ Logger.getLogger(ProductionMetaDataRoute.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ReferentialConsumerRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ReferentialConsumerRoute.java
new file mode 100644
index 0000000..63f0615
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/ReferentialConsumerRoute.java
@@ -0,0 +1,30 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.ReferentielDataConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ReferentialConsumerRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("rabbitmq:"
+ + AppContext.REFERENTIEL_INTEGRATION_EXCHANGE
+ + "?queue=" + AppContext.REFERENTIEL_INTEGRATION_QUEUE
+ + "&routingKey=" + AppContext.REFERENTIEL_INTEGRATION_ROUTING_KEY
+ + "&autoDelete=false"
+ + "&autoAck=false"//Désactiver l'auto acquittement du message
+ + "&durable=true")//permettre à l'échange de survivre à un redémarrage
+ .log("************************receiving ref from api before unmarshalling***********************")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(ReferentielToImportData.class))
+ .bean(ReferentielDataConsumer.class);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/StandaloneServerStateConsumerRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/StandaloneServerStateConsumerRoute.java
new file mode 100644
index 0000000..01dd819
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/StandaloneServerStateConsumerRoute.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.fdx.messaging.common.FdxMessagingContext;
+import com.fdx.messaging.common.StandaloneServerState;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.StandaloneServerStateConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class StandaloneServerStateConsumerRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("rabbitmq:"
+ + FdxMessagingContext.STANDALONE_SERVER_EXCHANGE
+ + "?queue=" + FdxMessagingContext.STANDALONE_SERVER_QUEUE
+ + "&routingKey=" + FdxMessagingContext.STANDALONE_SERVER_ROUTING_KEY
+ + "&autoDelete=false")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(StandaloneServerState.class))
+ .bean(StandaloneServerStateConsumer.class);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/TransfertDataMessageRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/TransfertDataMessageRoute.java
new file mode 100644
index 0000000..0ef831b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/in/TransfertDataMessageRoute.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.in;
+
+import com.fdx.messaging.common.FdxMessagingContext;
+import com.fdx.messaging.common.TransfertDataMessage;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.TransfertDataMessageConsumer;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class TransfertDataMessageRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("rabbitmq:"
+ + FdxMessagingContext.TRANSFERT_DATA_EXCHANGE
+ + "?queue=" + FdxMessagingContext.TRANSFERT_DATA_QUEUE
+ + "&routingKey=" + FdxMessagingContext.TRANSFERT_DATA_ROUTING_KEY
+ + "&autoDelete=false")
+ .log("*******************In fdxconsultation JmsTransfertDataMessageRoute")
+ .unmarshal(JacksonMapperFormat.jacksonDataFormat(TransfertDataMessage.class))
+ .bean(TransfertDataMessageConsumer.class);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/DirectToTokenGenerationKafkaRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/DirectToTokenGenerationKafkaRoute.java
new file mode 100644
index 0000000..0f31a2e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/DirectToTokenGenerationKafkaRoute.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.out;
+
+import com.megatim.fdxcommons.model.jms.messages.ApiTokenMessage;
+import com.megatim.fdxcommons.tools.CommonAppContext;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DirectToTokenGenerationKafkaRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("direct:" + AppCommonContext.TOKEN_GENERATION_DIRECT)
+ .process(ex -> {
+ System.out.println("in DirectToTokenGenerationQueueRoute codeParticipant = " + ((ApiTokenMessage) ex.getIn().getBody()).getCodeParticipant());
+ System.out.println("token = " + ((ApiTokenMessage) ex.getIn().getBody()).getToken());
+ })
+ .marshal(JacksonMapperFormat.jacksonDataFormat(ApiTokenMessage.class))
+ .to("rabbitmq:"
+ + CommonAppContext.TOKEN_GENERATION_EXCHANGE
+ + "?queue=" + CommonAppContext.TOKEN_GENERATION_QUEUE
+ + "&routingKey=" + CommonAppContext.TOKEN_GENERATION_ROUTING_KEY
+ + "&autoDelete=false");
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/RemoteConfigurationRoute.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/RemoteConfigurationRoute.java
new file mode 100644
index 0000000..51d3f94
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/out/RemoteConfigurationRoute.java
@@ -0,0 +1,36 @@
+/*
+ * 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.service.impl.camel.routes.out;
+
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.service.resolvers.JacksonMapperFormat;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class RemoteConfigurationRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ onException(Exception.class)
+ .handled(false)
+ .log("Exception occured: ${exception.message}")
+ .logStackTrace(true)
+ .end();
+
+ from("direct:" + AppCommonContext.REMOTE_CONGIGURATION_DIRECT)
+ .marshal(JacksonMapperFormat.jacksonDataFormat(RemoteConfigurationDto.class))
+ .to("rabbitmq:"
+ + AppContext.REMOTE_CONFIGURATION_EXCHANGE
+ + "?queue=" + AppContext.REMOTE_CONFIGURATION_QUEUE
+ + "&routingKey=" + AppContext.REMOTE_CONFIGURATION_ROUTING_KEY
+ + "&autoDelete=false"
+ + "&durable=true");
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DataIntegrationTimer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DataIntegrationTimer.java
new file mode 100644
index 0000000..f24cb32
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DataIntegrationTimer.java
@@ -0,0 +1,31 @@
+package com.megatim.fdxconsultation.service.impl.camel.routes.timers;
+
+import com.megatim.fdxconsultation.service.impl.camel.routes.timers.processor.DataIntegrationProcessor;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import javax.inject.Inject;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataIntegrationTimer extends RouteBuilder {
+
+ @Inject
+ private DataIntegrationProcessor processor;
+
+ @Override
+ public void configure() throws Exception {
+
+ onException(Exception.class)
+ .handled(true)
+ .log("Exception occured: ${exception.message}")
+ .logStackTrace(true)
+ .end();
+
+ from("timer://" + AppCommonContext.DATA_INTEGRATION_TIMER + "?period=10000&delay=0&fixedRate=false&synchronous=true")
+ .log("*************************** In " + AppCommonContext.DATA_INTEGRATION_TIMER)
+ .throttle(1)
+ .bean(processor);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DeleteDataProductionTimer.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DeleteDataProductionTimer.java
new file mode 100644
index 0000000..00a7ebb
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/DeleteDataProductionTimer.java
@@ -0,0 +1,33 @@
+/*
+ * 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.service.impl.camel.routes.timers;
+
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.service.ifaces.timer.processor.DeleteDataProductionJob;
+import javax.inject.Inject;
+import org.apache.camel.builder.RouteBuilder;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DeleteDataProductionTimer extends RouteBuilder {
+
+ @Inject
+ private DeleteDataProductionJob deleteDataProductionJob;
+
+ @Override
+ public void configure() throws Exception {
+ onException(Exception.class)
+ .handled(true)
+ .log("Exception occured: ${exception.message}")
+ .logStackTrace(true)
+ .end();
+
+ from("timer://" + AppContext.DELETE_DATAPRODUCTION_TIMER + "?period=30000&delay=0&fixedRate=false&synchronous=true")
+ .throttle(1)
+ .bean(deleteDataProductionJob);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DataIntegrationProcessor.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DataIntegrationProcessor.java
new file mode 100644
index 0000000..ff78857
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DataIntegrationProcessor.java
@@ -0,0 +1,53 @@
+/*
+ * 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.service.impl.camel.routes.timers.processor;
+
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.impl.dataproductionworker.DataProductionWorkerGroup;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.core.impl.sockets.DataProductionSessionHandler;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.util.List;
+import javax.annotation.Resource;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class DataIntegrationProcessor implements Processor {
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Inject
+ private DataProductionManager dataProductionManager;
+
+ @Inject
+ private ColumnDefinitionManager columnDefinitionManager;
+
+ @Inject
+ private DataProductionSessionHandler dataProductionSessionHandler;
+
+ @Inject
+ private DataProductionWorkerGroup dataProductionWorkerGroup;
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ List<DataProduction> dataProductions = dataProductionManager.findByStatutDataProduction(StatutDataProduction.ENCOURS_DE_CONSOMMATION);
+
+ for (DataProduction d : dataProductions) {
+ dataProductionWorkerGroup.addNewDataProductionTask(d);
+ }
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DeleteDataProductionJobImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DeleteDataProductionJobImpl.java
new file mode 100644
index 0000000..2dde692
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/camel/routes/timers/processor/DeleteDataProductionJobImpl.java
@@ -0,0 +1,101 @@
+/*
+ * 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.service.impl.camel.routes.timers.processor;
+
+import com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete;
+import javax.enterprise.context.Dependent;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
+import com.megatim.fdxcommons.tools.database.connection.DBConnection;
+import com.megatim.fdxcommons.tools.database.queries.DeleteTableDataQuery;
+import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
+import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
+import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionToDeleteManager;
+import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.service.ifaces.timer.processor.DeleteDataProductionJob;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.annotation.Resource;
+import javax.inject.Inject;
+import javax.sql.DataSource;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author ASUS
+ */
+@Dependent
+public class DeleteDataProductionJobImpl implements DeleteDataProductionJob {
+
+ @Inject
+ private DataProductionToDeleteManager dataProdToDeleteManager;
+
+ @Inject
+ private DataProductionManager dataProdManager;
+
+ @Resource(lookup = AppCommonContext.JNDI_NAME)
+ private DataSource dataSource;
+
+ @Override
+ public void delete() throws Exception {
+ List<DataProductionToDelete> liste = dataProdToDeleteManager.findAll(null, Arrays.asList(), Arrays.asList());
+
+ if (liste != null && !liste.isEmpty()) {
+
+ try ( Connection connection = new DBConnection(dataSource).connection()) {
+
+ liste.stream().forEach(dt -> {
+ try {
+ DataProduction dataProduction = dataProdManager.getById(dt.getId());
+
+ if (dataProduction != null && dataProduction.getStatutDataProduction().equals(StatutDataProduction.A_CONSOMMER)) {
+ System.out.println("------------------In Consultation DeleteDataProductionTimer dataProductionId = " + dt.getId() + " --------------------------------");
+ deleteDataProductionToDelete(dataProduction, connection);
+ }
+ } catch (Exception ex) {
+ Logger.getLogger(DeleteDataProductionJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ });
+ } catch (Exception ex) {
+ Logger.getLogger(DeleteDataProductionJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+ }
+ }
+
+ @Transactional
+ private void deleteDataProductionToDelete(DataProduction dataProduction, Connection connection) throws SQLException, Exception {
+ System.out.println("------------------------------------------in Consultation deleteDataProductionToDelete------------------------------------");
+ FdxConsultationTable consTable = FdxConsultationTableFactory.createTable(dataProduction.getCodeTypeFichier(), dataProduction.getReferentielVersion(), connection);
+ new DeleteTableDataQuery(consTable.getTableName().name(connection),
+ connection,
+ deleteTableDataCriterion(dataProduction.getId())
+ ).execute();
+
+ String query = "DELETE FROM dataproductiontodelete WHERE id = ?";
+
+ try ( PreparedStatement statement = connection.prepareStatement(query)) {
+ statement.setLong(1, dataProduction.getId());
+ statement.executeUpdate();
+ }
+ }
+
+ private QueryCriterion deleteTableDataCriterion(Long dataProductionId) {
+ return new QueryCriterion(new DataProductionIdColumnDefinition().name(),
+ dataProductionId,
+ Operateur.NOT_EQUALS,
+ null,
+ Arrays.asList()
+ );
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/chat/UserChatListRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/chat/UserChatListRSImpl.java
new file mode 100644
index 0000000..ca91504
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/chat/UserChatListRSImpl.java
@@ -0,0 +1,49 @@
+package com.megatim.fdxconsultation.service.impl.chat;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.searchentities.UserSearch;
+import com.megatim.fdxconsultation.service.ifaces.chat.UserChatListRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Utilisateurs pour le chat", description = "Utilisateurs pour le chat")
+@Path("user-chat-list")
+public class UserChatListRSImpl implements UserChatListRS {
+
+ @Inject
+ private UserManager manager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = manager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, UserSearch searchEntity) {
+ return Response.ok(
+ manager.getAll(searchEntity, utilisateurConnecte)
+ .stream()
+ .collect(Collectors.toList())
+ ).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, UserSearch searchEntity) {
+ return manager.size(searchEntity);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/consumption/DataConsumptionOperationsRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/consumption/DataConsumptionOperationsRSImpl.java
new file mode 100644
index 0000000..5a209ad
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/consumption/DataConsumptionOperationsRSImpl.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxconsultation.service.impl.consumption;
+
+import com.megatim.fdxcommons.model.pojo.PageData;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationValidationException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.dtos.reporting.CustomTypeFichierReportConfigurationFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.tools.exceptions.ApplicationForbidenException;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.helper.DataConsumptionOperations;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.List;
+import java.util.Optional;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import com.megatim.fdxconsultation.service.ifaces.consumption.DataConsumptionOperationsRS;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_CONSULTATION_WEB, path = "Consultation des fichiers", description = "Consultation des fichiers")
+@Path("consume-typefichier")
+public class DataConsumptionOperationsRSImpl implements DataConsumptionOperationsRS {
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper commonMapper;
+
+ @Inject
+ DataConsumptionOperations dataConsumptionOperations;
+
+ @Inject
+ ColumnDefinitionManager columnDefinitionManager;
+
+ public DataConsumptionOperationsRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response find(HttpHeaders headers, String referentielVersion, String codeTypeFichier, CriteriaFormRequest criteriaFormRequest) {
+ stopIfTypeFichierNotExists(referentielVersion, codeTypeFichier);
+ stopIfUserNotAllowed(utilisateurConnecte, codeTypeFichier);
+
+ List<Map<String, Object>> datas = dataConsumptionOperations.findByCriteria(referentielVersion, codeTypeFichier, criteriaFormRequest.getCriteria());
+ return Response.ok(datas).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, String referentielVersion, String codeTypeFichier, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ stopIfTypeFichierNotExists(referentielVersion, codeTypeFichier);
+ stopIfUserNotAllowed(utilisateurConnecte, codeTypeFichier);
+
+ PageData datas = dataConsumptionOperations.findByCriteriaWithPagination(referentielVersion, codeTypeFichier, criteriaFormRequest.getCriteria(), pageNumber, pageSize);
+ return Response.ok(datas).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, String referentielVersion, String codeTypeFichier, CriteriaFormRequest criteriaFormRequest) {
+ stopIfTypeFichierNotExists(referentielVersion, codeTypeFichier);
+ return dataConsumptionOperations.count(referentielVersion, codeTypeFichier, criteriaFormRequest.getCriteria());
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers, String referentielVersion, String codeTypeFichier) {
+ stopIfTypeFichierNotExists(referentielVersion, codeTypeFichier);
+ return Response.ok(commonMapper.columnDefinitionListToColumnDefinitionDtoList(dataConsumptionOperations.getPrintableColumns(referentielVersion, codeTypeFichier))).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, String referentielVersion, String codeTypeFichier, CustomTypeFichierReportConfigurationFromView reportConfiguration) {
+ stopIfTypeFichierNotExists(referentielVersion, codeTypeFichier);
+ stopIfUserNotAllowed(utilisateurConnecte, codeTypeFichier);
+
+ File file = null;
+ try {
+ reportConfiguration.setTitle("LISTE DES DONNEES POUR LE TYPE DE FICHIER (" + codeTypeFichier + ")");
+ file = dataConsumptionOperations.printAll(referentielVersion, codeTypeFichier, reportConfiguration, utilisateurConnecte);
+ } catch (CommonApplicationValidationException ex) {
+ throw ex;
+ } catch (Exception ex) {
+ Logger.getLogger(DataConsumptionOperationsRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+
+ Response.ResponseBuilder response = Response.ok((Object) file);
+ response.header("Content-Disposition", "attachment;filename=" + file.getName());
+ return response.build();
+ }
+
+ private void stopIfUserNotAllowed(User user, String codeTypeFichier) {
+
+ Optional<TypeFichier> optTypeFichier = user.getTypeFichiers().stream().filter(t -> t.getCode().equals(codeTypeFichier)).findFirst();
+
+ if (!optTypeFichier.isPresent()) {
+ throw new ApplicationForbidenException("Impossible de continuer la requête car l'utilisateur "
+ + user.getUserName() + " n'a pas accès au typefichier " + codeTypeFichier);
+ }
+ }
+
+ private void stopIfTypeFichierNotExists(String referentielVersion, String codeTypeFichier) {
+
+ if (columnDefinitionManager.findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier).isEmpty()) {
+ throw new CommonRessourceNotFoundException("Structure du typeFichier '" + codeTypeFichier + "' inexistant ou structure ");
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/dataproduction/DataProductionRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/dataproduction/DataProductionRSImpl.java
new file mode 100644
index 0000000..9247561
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/dataproduction/DataProductionRSImpl.java
@@ -0,0 +1,164 @@
+package com.megatim.fdxconsultation.service.impl.dataproduction;
+
+import com.megatim.fdxcommons.model.dtos.dataproduction.DataProductionDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.dataproduction.DataProductionRS;
+import com.megatim.fdxconsultation.service.impl.referentiel.ParticipantRSImpl;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Fdx API", description = "Fdx API")
+@Path("data-production")
+@Dependent
+public class DataProductionRSImpl implements DataProductionRS {
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private DataProductionManager manager;
+
+ @Inject
+ MapStructMapper mapper;
+
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ public DataProductionRSImpl() {
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public DataProductionDto mapToDto(DataProduction entity) {
+ return mapper.dataProductionToDataProductionDto(entity);
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ DataProduction datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<DataProduction> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pageSize);
+ return Response.ok(mapper.dataProductionListToDataProductionDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return manager.count(criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(DataProduction.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(manager.findAll(criteriaFormRequest, Arrays.asList())).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(DataProductionDto.class);
+ return Response.ok(mapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/CategoryRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/CategoryRSImpl.java
new file mode 100644
index 0000000..40a8bf4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/CategoryRSImpl.java
@@ -0,0 +1,66 @@
+package com.megatim.fdxconsultation.service.impl.documents;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.documents.CategoryManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Category;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.documents.CategoryRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = AppCommonContext.MODULE_DOCUMENTATION, path = "Catégories", description = "Catégories")
+@Path("category")
+public class CategoryRSImpl implements CategoryRS {
+
+ @Inject
+ private CategoryManager categoryManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ private User connectedUser;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ connectedUser = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, Category entity) {
+ Category c = categoryManager.add(entity, connectedUser);
+ return Response.ok(mapper.categoryToCategorySlimDto(c)).build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, Long id, Category entity) {
+ Category c = categoryManager.update(id, entity, connectedUser);
+ return Response.ok(mapper.categoryToCategorySlimDto(c)).build();
+ }
+
+ @Override
+ public void delete(HttpHeaders headers, Long id) {
+ Category c = categoryManager.delete(id, connectedUser);
+ }
+
+ @Override
+ public Response all(HttpHeaders headers) {
+ List<Category> categories = categoryManager.loadAll();
+ return Response.ok(categories.stream().map(c -> mapper.categoryToCategoryDto(c)).collect(Collectors.toList())).build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/DocumentRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/DocumentRSImpl.java
new file mode 100644
index 0000000..91e4551
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/documents/DocumentRSImpl.java
@@ -0,0 +1,58 @@
+package com.megatim.fdxconsultation.service.impl.documents;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.documents.DocumentManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.documents.Document;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.documents.DocumentRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = AppCommonContext.MODULE_DOCUMENTATION, path = "Documents", description = "Documents")
+@Path("document")
+public class DocumentRSImpl implements DocumentRS {
+
+ @Inject
+ private DocumentManager documentManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ private User connectedUser;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ connectedUser = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, Long categoryId, Document entity) {
+ Document document = documentManager.add(categoryId, entity, connectedUser);
+ return Response.ok(mapper.documentToDocumentDto(document)).build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, Long id, Document entity) {
+ Document document = documentManager.update(id, entity, connectedUser);
+ return Response.ok(mapper.documentToDocumentDto(document)).build();
+ }
+
+ @Override
+ public void delete(HttpHeaders headers, Long id) {
+ documentManager.delete(id, connectedUser);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/favoritessearch/FavoriteSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/favoritessearch/FavoriteSearchRSImpl.java
new file mode 100644
index 0000000..ad538dc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/favoritessearch/FavoriteSearchRSImpl.java
@@ -0,0 +1,130 @@
+package com.megatim.fdxconsultation.service.impl.favoritessearch;
+
+import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector;
+import com.megatim.fdxcommons.model.enumeration.Operateur;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.favoritessearch.FavoriteSearchManager;
+import com.megatim.fdxconsultation.core.ifaces.stats.CriteriaEntityPersistedManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.FavoriteSearchDto;
+import com.megatim.fdxconsultation.model.favoritessearch.FavoriteSearch;
+import com.megatim.fdxconsultation.service.ifaces.favoritessearch.FavoriteSearchRS;
+import com.megatim.fdxconsultation.service.impl.referentiel.PaysRSImpl;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+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 java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = AppCommonContext.MODULE_CONSULTATION_WEB, path = "Favoris recherches", description = "Favoris recherches")
+@Path("favorite-search")
+public class FavoriteSearchRSImpl implements FavoriteSearchRS {
+
+ @Inject
+ private FavoriteSearchManager manager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private MapStructMapper commonMapper;
+
+ @Inject
+ private com.megatim.fdxconsultation.model.mappers.MapStructMapper mapper;
+
+ @Inject
+ private CriteriaEntityPersistedManager criteriaManager;
+
+ private User connectedUser;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ connectedUser = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, FavoriteSearchDto favoriteSearchRequest) {
+ manager.add(favoriteSearchRequest, connectedUser);
+ return Response.noContent().build();
+ }
+
+ @Override
+ public Response all(HttpHeaders headers) {
+ return Response.ok(manager.all(connectedUser.getUserName())).build();
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(FavoriteSearch.class)).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return manager.count(criterion(criteriaFormRequest));
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ private CriteriaEntityFromView criterion(CriteriaFormRequest criteriaFormRequest) {
+
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+ finalCriterion.getSubCriterias().add(newCriteriaEntityFromView("userName", connectedUser.getUserName(), Operateur.EQUALS));
+
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ if (criterion != null) {
+ finalCriterion.getSubCriterias().add(criterion);
+ }
+
+ return finalCriterion;
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<FavoriteSearchDto> data = manager
+ .findWithPagination(criterion(criteriaFormRequest), Arrays.asList(), Arrays.asList(new OrderByDefinition("dateCreation", OrderByType.DESC)), pageNumber, pageSize)
+ .stream()
+ .map(f -> {
+ FavoriteSearchDto favoriteSearchDto = mapper.favoriteSearchToFavoriteSearchDto(f);
+ favoriteSearchDto.setCriteria(criteriaManager.criteriaEntityPersistedToCriteriaEntityFromView(f.getCriteria()));
+ return favoriteSearchDto;
+ })
+ .collect(Collectors.toList());
+ return Response.ok(data).build();
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ private CriteriaEntityFromView newCriteriaEntityFromView(String nomColonne, Object criteriaValue, Operateur operateur) {
+ CriteriaEntityFromView criterion = new CriteriaEntityFromView();
+ criterion.setNomColonne(nomColonne);
+ criterion.setCriteriaValue(criteriaValue);
+ criterion.setOperateur(operateur);
+
+ return criterion;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/AfterUserActionFilter.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/AfterUserActionFilter.java
new file mode 100644
index 0000000..af345ed
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/AfterUserActionFilter.java
@@ -0,0 +1,78 @@
+package com.megatim.fdxconsultation.service.impl.filters;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.AfterUserAction;
+import com.megatim.fdxcommons.core.ifaces.interceptor.InterceptorHandler;
+import com.megatim.fdxcommons.model.log.ContainerContextDto;
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerResponseContext;
+import javax.ws.rs.container.ContainerResponseFilter;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.UriInfo;
+import javax.ws.rs.ext.Provider;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.cdi.CdiCamelContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@Provider
+public class AfterUserActionFilter implements ContainerResponseFilter {
+
+ @Context
+ private ResourceInfo resourceInfo;
+
+ @Inject
+ private InterceptorHandler handler;
+
+ @Inject
+ private CdiCamelContext camelContext;
+
+ @Context
+ private SecurityContext securityContext;
+
+ @Context
+ private HttpServletRequest servletRequest;
+
+ @Context
+ private UriInfo uriInfo;
+
+ @Inject
+ private AfterUserAction afterAction;
+
+ @Override
+ public void filter(ContainerRequestContext crc, ContainerResponseContext crc1) throws IOException {
+ try {
+
+ UserActionLog log = afterAction.filter(getContainerContext(crc, crc1));
+ if (log != null) {
+ ProducerTemplate producerTemplate = camelContext.createProducerTemplate();
+ producerTemplate.asyncSendBody("direct:" + AppCommonContext.WEB_USER_ACTION_DIRECT, log);
+ }
+
+ } catch (Exception ex) {
+ Logger.getLogger(AfterUserActionFilter.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ }
+
+ }
+
+ private ContainerContextDto getContainerContext(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) {
+ ContainerContextDto containerContext = new ContainerContextDto();
+ containerContext.setContainerRequestContext(containerRequestContext);
+ containerContext.setContainerResponseContext(containerResponseContext);
+ containerContext.setHttpServletRequest(servletRequest);
+ containerContext.setUriInfo(uriInfo);
+ containerContext.setResourceInfo(resourceInfo);
+ containerContext.setSecurityContext(securityContext);
+ return containerContext;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/BeforeUserActionFilter.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/BeforeUserActionFilter.java
new file mode 100644
index 0000000..ee5fc51
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/BeforeUserActionFilter.java
@@ -0,0 +1,34 @@
+/*
+ * 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.service.impl.filters;
+
+import com.megatim.fdxcommons.core.ifaces.interceptor.BeforeAction;
+import java.io.IOException;
+import javax.inject.Inject;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.ext.Provider;
+
+/**
+ *
+ * @author ASUS
+ */
+@Provider
+public class BeforeUserActionFilter implements ContainerRequestFilter {
+
+ @Context
+ private ResourceInfo resourceInfo;
+
+ @Inject
+ private BeforeAction beforeAction;
+
+ @Override
+ public void filter(ContainerRequestContext crc) throws IOException {
+// beforeAction.filter(crc, resourceInfo);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/CORSFilter.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/CORSFilter.java
new file mode 100644
index 0000000..c914b80
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/CORSFilter.java
@@ -0,0 +1,47 @@
+package com.megatim.fdxconsultation.service.impl.filters;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author lenovo
+ */
+public class CORSFilter implements Filter {
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+
+ response.addHeader("Access-Control-Allow-Origin", "*");
+ response.addHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");
+ response.addHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers"));
+ response.addHeader("Access-Control-Expose-Headers", "Location, Content-Disposition");
+
+ // For HTTP OPTIONS verb reply with ACCEPTED status code, for CORS handshake
+ if (request.getMethod().equals("OPTIONS")) {
+ response.setStatus(HttpServletResponse.SC_ACCEPTED);
+ return;
+ }
+
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+ @Override
+ public void init(FilterConfig arg0) throws ServletException {
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/SecurityFilter.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/SecurityFilter.java
new file mode 100644
index 0000000..d24d5e4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/filters/SecurityFilter.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.service.impl.filters;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.administration.security.UserSecurity;
+import com.mgt.rs.security.core.common.Secured;
+import com.mgt.rs.security.core.filter.AuthenticationFilter;
+import javax.inject.Inject;
+import com.mgt.rs.security.core.ifaces.UserRsSecurity;
+import javax.annotation.Priority;
+import javax.enterprise.context.Dependent;
+import javax.ws.rs.Priorities;
+import javax.ws.rs.ext.Provider;
+
+/**
+ *
+ * @author ASUS
+ */
+@Secured
+@Provider
+@Dependent
+@Priority(Priorities.AUTHENTICATION)
+public class SecurityFilter extends AuthenticationFilter {
+
+ /**
+ * On injecte un Gestionnaire d'entites
+ *
+ */
+ @Inject
+ private UserManager userManager;
+
+ /**
+ * Permet de recupérer un utilisateur via son username
+ *
+ * @param userName
+ * @return
+ */
+ @Override
+ protected UserRsSecurity recuperUtilisateur(String userName) {
+ User user = userManager.recuperUtilisateur(userName);
+ if (user != null) {
+ UserSecurity utilisateur = new UserSecurity(user);
+ utilisateur.setUserName(userName);
+ return utilisateur;
+ }
+ return null;
+ }
+
+ @Override
+ public boolean applicationValidation(UserRsSecurity user, Secured secured) {
+ return true;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/integration/ColumnDefinitionResourceImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/integration/ColumnDefinitionResourceImpl.java
new file mode 100644
index 0000000..127b1ae
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/integration/ColumnDefinitionResourceImpl.java
@@ -0,0 +1,32 @@
+package com.megatim.fdxconsultation.service.impl.integration;
+
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.service.ifaces.integration.ColumnDefinitionResource;
+import java.util.List;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("column-definitions")
+@Dependent
+public class ColumnDefinitionResourceImpl implements ColumnDefinitionResource {
+
+ @Inject
+ private ColumnDefinitionManager columDefinitionManager;
+
+ @Override
+ public Response columnDefinitions(HttpHeaders headers, String codeTypeFichier, String referentielVersion) {
+ List<ColumnDefinition> columDefinitions
+ = columDefinitionManager.findByReferentielAndTypeFichier(referentielVersion, codeTypeFichier);
+
+ return Response.ok(columDefinitions).build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/ApiUserActionLogRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/ApiUserActionLogRSImpl.java
new file mode 100644
index 0000000..ba96366
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/ApiUserActionLogRSImpl.java
@@ -0,0 +1,198 @@
+package com.megatim.fdxconsultation.service.impl.log;
+
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.ApiUserActionLogManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.model.log.dtos.ApiUserActionSummarySearch;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.log.ApiUserActionLogReporting;
+import com.megatim.fdxconsultation.service.ifaces.log.ApiUserActionLogRS;
+import com.megatim.fdxconsultation.service.impl.referentiel.PaysRSImpl;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Fdx API", description = "Fdx API")
+@Path("api-user-action-log")
+public class ApiUserActionLogRSImpl implements ApiUserActionLogRS {
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ ApiUserActionLogManager manager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public ApiUserActionLogRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public UserActionLogDto mapToDto(ApiUserActionLog entity) {
+ return mapper.apiUserActionLogToUserActionLogDto(entity);
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ List<ApiUserActionLog> logs = manager.findWithPagination(criterion, Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+
+ return Response.ok(mapper.apiUserActionLogListToUserActionLogDtoList(logs)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(ApiUserActionLog.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ List<ApiUserActionLog> logs = manager.findAll(criterion, Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)));
+
+ return Response.ok(mapper.apiUserActionLogListToUserActionLogDtoList(logs)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ApiUserActionLog entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail log API (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(ApiUserActionLogReporting.class);
+ return Response.ok(mapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ApiUserActionLog entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail log API (id=" + entite.getId() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getByStatut(HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return Response.ok(manager.getByStatut(apiUserActionSummarySearch)).build();
+ }
+
+ @Override
+ public Response getByStatutAndUserName(HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return Response.ok(manager.getByStatutAndUserName(apiUserActionSummarySearch)).build();
+ }
+
+ @Override
+ public Response getByStatutAndPath(HttpHeaders headers, ApiUserActionSummarySearch apiUserActionSummarySearch) {
+ return Response.ok(manager.getByStatutAndPath(apiUserActionSummarySearch)).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/UserActionLogRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/UserActionLogRSImpl.java
new file mode 100644
index 0000000..79d96f0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/log/UserActionLogRSImpl.java
@@ -0,0 +1,165 @@
+/*
+ * 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.service.impl.log;
+
+import com.megatim.fdxcommons.model.log.UserActionLog;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.log.UserActionLogDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.log.UserActionLogRS;
+import com.megatim.fdxconsultation.service.impl.referentiel.PaysRSImpl;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = "", path = "", description = "")
+@Path("user-action-log")
+public class UserActionLogRSImpl implements UserActionLogRS {
+
+ @Inject
+ MapStructMapper mapper;
+
+ @Inject
+ UserActionLogManager manager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Override
+ public UserActionLogDto mapToDto(UserActionLog entity) {
+ return mapper.userActionLogToUserActionLogDto(entity);
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, Long id) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ List<UserActionLog> logs = manager.findWithPagination(criterion, Arrays.asList(), Arrays.asList(), pageNumber, pageSize);
+
+ return Response.ok(mapper.userActionLogListToUserActionLogDtoList(logs)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(UserActionLog.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ List<UserActionLog> logs = manager.findAll(criterion, Arrays.asList(), Arrays.asList());
+
+ return Response.ok(mapper.userActionLogListToUserActionLogDtoList(logs)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(UserActionLogRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(UserActionLogDto.class);
+ return Response.ok(mapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(HttpHeaders headers, @Context HttpServletRequest request, Long id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ExtensionFichierRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ExtensionFichierRSImpl.java
new file mode 100644
index 0000000..3d8466a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ExtensionFichierRSImpl.java
@@ -0,0 +1,173 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.ExtensionFichier;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ExtensionFichierManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.ExtensionFichierDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ExtensionFichierReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.ExtensionFichierRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Extensions des fichiers", description = "Extensions des fichiers")
+@SecuredAdmin(action = {"consulter"})
+@Path("extension-fichier")
+@Dependent
+public class ExtensionFichierRSImpl implements ExtensionFichierRS {
+
+ @Inject
+ private ExtensionFichierManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public ExtensionFichierRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public ExtensionFichierDto mapToDto(ExtensionFichier entity) {
+ return commonMapper.extensionFichierToExtensionFichierDto(entity);
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<ExtensionFichier> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.extensionFichierListToExtensionFichierDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ ExtensionFichier datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ExtensionFichier entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail extension fichier : " + entite.getExtension() + " (id=" + entite.getExtension() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(ExtensionFichierReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ ExtensionFichier entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail extension fichier : " + entite.getExtension() + " (id=" + entite.getExtension() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(ExtensionFichier.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.extensionFichierListToExtensionFichierDtoList(manager.findAll(criteriaFormRequest, Arrays.asList()))).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeNoeudRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeNoeudRSImpl.java
new file mode 100644
index 0000000..13ec87c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeNoeudRSImpl.java
@@ -0,0 +1,175 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeNoeud;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeNoeudManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeNoeudDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeNoeudReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.GroupeNoeudRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Groupes de noeuds", description = "Groupes de noeuds")
+@Path("groupe-noeud")
+@Dependent
+public class GroupeNoeudRSImpl implements GroupeNoeudRS {
+
+ @Inject
+ private GroupeNoeudManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public GroupeNoeudRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public GroupeNoeudDto mapToDto(GroupeNoeud entity) {
+ return commonMapper.groupeNoeudToGroupeNoeudDto(entity);
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<GroupeNoeud> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.groupeNoeudListToGroupeNoeudDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ try {
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ GroupeNoeud datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ GroupeNoeud entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail groupe noeud : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeNoeudRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(GroupeNoeudReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ GroupeNoeud entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail groupe noeud : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(GroupeNoeud.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.groupeNoeudListToGroupeNoeudDtoList(manager.findAll(criteriaFormRequest, Arrays.asList()))).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeParticipantRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeParticipantRSImpl.java
new file mode 100644
index 0000000..9ee8dc0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/GroupeParticipantRSImpl.java
@@ -0,0 +1,179 @@
+/*
+ * 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.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.GroupeParticipant;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.GroupeParticipantManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.GroupeParticipantDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntity;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.GroupeParticipantReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.GroupeParticipantRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Groupes de participants", description = "Groupes de participants")
+@Path("groupe-participant")
+@Dependent
+public class GroupeParticipantRSImpl implements GroupeParticipantRS {
+
+ @Inject
+ private GroupeParticipantManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public GroupeParticipantRSImpl() {
+ super();
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(GroupeParticipant.class)).build();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public GroupeParticipantDto mapToDto(GroupeParticipant entity) {
+ return commonMapper.groupeParticipantToGroupeParticipantDto(entity);
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+
+ try {
+ List<GroupeParticipant> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.groupeParticipantListToGroupeParticipantDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ GroupeParticipant datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ File file = null;
+
+ try {
+ file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return manager.downloadFile(file);
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ GroupeParticipant entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail groupe participant : "+entite.getCode()+"-"+entite.getLibelle()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(GroupeParticipantRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(GroupeParticipantReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ GroupeParticipant entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail groupe participant : "+entite.getCode()+"-"+entite.getLibelle()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.groupeParticipantListToGroupeParticipantDtoList(manager.findAll(criteriaFormRequest, Arrays.asList()))).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/NoeudRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/NoeudRSImpl.java
new file mode 100644
index 0000000..58905a7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/NoeudRSImpl.java
@@ -0,0 +1,188 @@
+/*
+ * 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.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Noeud;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.NoeudManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.NoeudDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.search.SearchColumn;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.NoeudReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.NoeudRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Noeuds", description = "Noeuds")
+@Path("noeud")
+@Dependent
+public class NoeudRSImpl implements NoeudRS {
+
+ @Inject
+ private NoeudManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public NoeudRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public NoeudDto mapToDto(Noeud entity) {
+ NoeudDto dto = null;
+ try {
+ dto = commonMapper.noeudToNoeudDto(entity);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ return dto;
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ List<SearchColumn> searchColumns = CriteriaEntitySearchUtil.getSearchColumns(Noeud.class);
+ Collections.sort(searchColumns, (SearchColumn s1, SearchColumn s2) -> Integer.valueOf(s1.getRang()).compareTo(s2.getRang()));
+
+ return Response.ok(searchColumns).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Noeud> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.noeudListToNoeudDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ Noeud datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Noeud entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail noeud : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(NoeudRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(NoeudReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Noeud entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail noeud : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.noeudListToNoeudDtoList(manager.findAll(criteriaFormRequest, Arrays.asList()))).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ParticipantRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ParticipantRSImpl.java
new file mode 100644
index 0000000..d3bfa6a
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ParticipantRSImpl.java
@@ -0,0 +1,175 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Participant;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ParticipantManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ParticipantReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.ParticipantRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Participants", description = "Participants")
+@Path("participant")
+@Dependent
+public class ParticipantRSImpl implements ParticipantRS {
+
+ @Inject
+ private ParticipantManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ public ParticipantRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public ParticipantDto mapToDto(Participant entity) {
+ return commonMapper.participantToPartcipantDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Participant.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Participant> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList("noeuds"), pageNumber, pagesize);
+ return Response.ok(commonMapper.participantListToParticipantDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ Participant datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Participant entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail participant : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ParticipantRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.participantListToParticipantDtoList(manager.findAll(criteriaFormRequest, Arrays.asList("noeuds")))).build();
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(ParticipantReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Participant entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail participant : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/PaysRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/PaysRSImpl.java
new file mode 100644
index 0000000..fefe375
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/PaysRSImpl.java
@@ -0,0 +1,175 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Pays;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.PaysManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.PaysDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.reporting.model.referentiel.PaysReporting;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.PaysRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Pays", description = "Pays")
+@Path("pays")
+@SecuredAdmin(action = {"valider", "rejeter", "consulter"})
+public class PaysRSImpl implements PaysRS {
+
+ @Inject
+ private PaysManager manager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public PaysRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public PaysDto mapToDto(Pays entity) {
+ return commonMapper.paysToPaysDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Pays.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Pays> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList("participants"), pageNumber, pageSize);
+ return Response.ok(commonMapper.paysListToPaysDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ Pays datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Pays entite = manager.getById(id);
+// userActionLogManager.log(headers, request, "Export pdf détail pays : "+entite.getCode()+" (id="+entite.getCode()+")",
+// utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(PaysReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Pays entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail pays : " + entite.getCode() + " (id=" + entite.getCode() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(manager.findAll(criteriaFormRequest, Arrays.asList("participants"))).build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ReferentielRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ReferentielRSImpl.java
new file mode 100644
index 0000000..fc829b4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/ReferentielRSImpl.java
@@ -0,0 +1,174 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ReferentielReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.ReferentielRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.SecurityContext;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Referentiels", description = "Referentiels")
+@Path("referentiel")
+public class ReferentielRSImpl implements ReferentielRS {
+
+ @Context
+ private SecurityContext securityContext;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private ReferentielManager manager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public ReferentielRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public ReferentielDto mapToDto(Referentiel entity) {
+ return commonMapper.referentielToReferentielDto(entity);
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Referentiel> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.referentielListToReferentielDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ Referentiel datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Referentiel entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail referentiel : "+entite.getVersion()+" (id="+entite.getVersion()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ReferentielRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(ReferentielReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ Referentiel entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail referentiel : "+entite.getVersion()+" (id="+entite.getVersion()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Referentiel.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(manager.findAll(criteriaFormRequest, Arrays.asList("extensionFichiers"))).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java
new file mode 100644
index 0000000..a781956
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/RoutageRSImpl.java
@@ -0,0 +1,189 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.RoutageId;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.referentiel.Routage;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.referentiel.dtos.RoutageDetailsResponse;
+import com.megatim.fdxconsultation.model.referentiel.dtos.RoutageSlimResponse;
+import com.megatim.fdxconsultation.reporting.model.referentiel.RoutageReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.RoutageRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Routages", description = "Routages")
+@Path("routage")
+@Dependent
+public class RoutageRSImpl implements RoutageRS {
+
+ @Inject
+ private RoutageManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ public RoutageRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public RoutageSlimResponse mapToDto(Routage entity) {
+ return new RoutageSlimResponse(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(Routage.class)).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(RoutageRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String referentielVersion, String codeTypeFichier) {
+ RoutageId routageId = new RoutageId(codeTypeFichier, referentielVersion);
+ Routage routage = manager.getById(routageId);
+ return Response.ok(new RoutageDetailsResponse(routage)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<Routage> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(allToDto(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(RoutageRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(PaysRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response printOne(HttpHeaders headers, HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOne(HttpHeaders headers, HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(RoutageReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(manager.findAll(criteriaFormRequest, Arrays.asList("routages"))).build();
+ }
+
+ @Override
+ public Response printOneRoutage(HttpHeaders headers, HttpServletRequest request, String codeTypeFichier, String versionReferentiel, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ RoutageId routageId = new RoutageId();
+ routageId.setTypeFichier(codeTypeFichier);
+ routageId.setReferentiel(versionReferentiel);
+ Routage entite = manager.getById(routageId);
+ userActionLogManager.log(headers, request, "Export pdf détail routage fichier : " + entite.getTypeFichier().getCode() + " (id=" + entite.getTypeFichier().getCode() + "-" + entite.getReferentiel().getVersion() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportCustumOneCriterion(codeTypeFichier, versionReferentiel));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response exportExcelOneRoutage(HttpHeaders headers, HttpServletRequest request, String codeTypeFichier, String versionReferentiel, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ RoutageId routageId = new RoutageId();
+ routageId.setTypeFichier(codeTypeFichier);
+ routageId.setReferentiel(versionReferentiel);
+ Routage entite = manager.getById(routageId);
+ userActionLogManager.log(headers, request, "Export excel détail routage fichier : " + entite.getTypeFichier().getCode() + " (id=" + entite.getTypeFichier().getCode() + "-" + entite.getReferentiel().getVersion() + ")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportCustumOneCriterion(codeTypeFichier, versionReferentiel));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(ExtensionFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/TypeFichierRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/TypeFichierRSImpl.java
new file mode 100644
index 0000000..c079cdd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/referentiel/TypeFichierRSImpl.java
@@ -0,0 +1,179 @@
+package com.megatim.fdxconsultation.service.impl.referentiel;
+
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierDto;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.reporting.model.referentiel.TypeFichierReporting;
+import com.megatim.fdxconsultation.service.ifaces.referentiel.TypeFichierRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.megatim.reporting.adhoc.dto.ReportConfiguration;
+import com.megatim.reporting.adhoc.pojo.CustomField;
+import com.megatim.reporting.adhoc.util.PrintableColumnExtractor;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author ASUS
+ */
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Types de fichier", description = "Types de fichier")
+@Path("type-fichier")
+@Dependent
+public class TypeFichierRSImpl implements TypeFichierRS {
+
+ @Inject
+ private TypeFichierManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private static User utilisateurConnecte;
+
+ @Inject
+ MapStructMapper mapStructMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper mapper;
+
+ public TypeFichierRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public TypeFichierDto mapToDto(TypeFichier entity) {
+ return commonMapper.typeFichierToTypeFichierDto(entity);
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(TypeFichier.class)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<TypeFichier> data = manager.findWithPagination(criteriaFormRequest, Arrays.asList(), pageNumber, pagesize);
+ return Response.ok(commonMapper.typeFichierListToTypeFichierDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ return Response.ok(commonMapper.typeFichierListToTypeFichierDtoList(manager.findAll(criteriaFormRequest, Arrays.asList("routages")))).build();
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ CriteriaEntityFromView criterion = criteriaFormRequest != null ? criteriaFormRequest.getCriteria() : null;
+ return manager.count(criterion);
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ TypeFichier datum = manager.getById(id);
+ return Response.ok(mapToDto(datum)).build();
+ }
+
+ @Override
+ public Response printAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.printAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response printOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ TypeFichier entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export pdf détail type fichier : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.printOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ Logger.getLogger(TypeFichierRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getPrintableColumns(HttpHeaders headers) {
+ List<CustomField> customFields = PrintableColumnExtractor.extract(TypeFichierReporting.class);
+ return Response.ok(mapStructMapper.customFieldListToCustomFieldDtoList(customFields)).build();
+ }
+
+ @Override
+ public Response exportExcelAll(HttpHeaders headers, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+
+ try {
+ File file = manager.exportExcelAll(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+
+ @Override
+ public Response exportExcelOne(@Context HttpHeaders headers, @Context HttpServletRequest request, String id, ReportConfiguration<CriteriaFormRequest> reportConfiguration) {
+ try {
+ TypeFichier entite = manager.getById(id);
+ userActionLogManager.log(headers, request, "Export excel détail type fichier : "+entite.getCode()+" (id="+entite.getCode()+")",
+ utilisateurConnecte.getUserName());
+ reportConfiguration.setSearchEntity(manager.getExportOneCriterion(id));
+ File file = manager.exportExcelOne(reportConfiguration, utilisateurConnecte);
+ return manager.downloadFile(file);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/remoteaction/RemoteConfigurationRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/remoteaction/RemoteConfigurationRSImpl.java
new file mode 100644
index 0000000..9f25a28
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/remoteaction/RemoteConfigurationRSImpl.java
@@ -0,0 +1,136 @@
+/*
+ * 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.service.impl.remoteaction;
+
+import com.megatim.fdxcommons.model.dtos.remoteproduction.RemoteConfigurationDto;
+import com.megatim.fdxcommons.model.enumeration.OrderByType;
+import com.megatim.fdxcommons.model.pojo.CriteriaFormRequest;
+import com.megatim.fdxcommons.model.pojo.OrderByDefinition;
+import com.megatim.fdxconsultation.model.remoteaction.RemoteConfiguration;
+import com.megatim.fdxcommons.tools.exceptions.ApplicationForbidenException;
+import com.megatim.fdxcommons.tools.exceptions.CommonApplicationServerException;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.log.UserActionLogManager;
+import com.megatim.fdxconsultation.core.ifaces.remoteaction.RemoteConfigurationManager;
+import com.megatim.fdxconsultation.core.impl.utils.CriteriaEntitySearchUtil;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.service.ifaces.remoteaction.RemoteConfigurationRS;
+import com.megatim.fdxconsultation.service.impl.api.token.ApiTokenRSImpl;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.enterprise.event.Observes;
+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_ADMINISTRATION, path = AppCommonContext.PATH_API_TOKEN, description = AppCommonContext.PATH_API_TOKEN)
+@Path("remoteconfiguration-management")
+public class RemoteConfigurationRSImpl implements RemoteConfigurationRS {
+
+ @Inject
+ private RemoteConfigurationManager manager;
+
+ @Inject
+ private UserActionLogManager userActionLogManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ private MapStructMapper mapStructMapper;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public RemoteConfigurationDto mapToDto(RemoteConfiguration entity) {
+ return mapStructMapper.remoteConfigurationToRemoteConfigurationDto(entity);
+ }
+
+ @Override
+ public Response findById(HttpHeaders headers, String id) {
+ RemoteConfiguration config = manager.find(manager.getEntityIdName(), id);
+ return Response.ok(mapToDto(config)).build();
+ }
+
+ @Override
+ public Response findWithPagination(HttpHeaders headers, Integer pageNumber, Integer pageSize, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ List<RemoteConfiguration> data = manager.findWithPagination(criteriaFormRequest.getCriteria(),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)), pageNumber, pageSize);
+ return Response.ok(mapStructMapper.remoteConfigurationListToRemoteConfigurationDtoList(data)).build();
+ } catch (Exception ex) {
+ Logger.getLogger(ApiTokenRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Long count(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return manager.count(criteriaFormRequest.getCriteria());
+ } catch (Exception ex) {
+ Logger.getLogger(ApiTokenRSImpl.class.getName()).log(Level.SEVERE, null, ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getSearchColumns(HttpHeaders headers) {
+ return Response.ok(CriteriaEntitySearchUtil.getSearchColumns(RemoteConfiguration.class)).build();
+ }
+
+ @Override
+ public Response findAll(HttpHeaders headers, CriteriaFormRequest criteriaFormRequest) {
+ try {
+ return Response.ok(manager.findAll(criteriaFormRequest.getCriteria(),
+ Arrays.asList(), Arrays.asList(new OrderByDefinition(manager.getEntityIdName(), OrderByType.DESC)))).build();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, RemoteConfiguration entity) {
+ stopIfUrlNotValid(entity.getUrl());
+ return Response.ok(manager.saveAndSend(entity, utilisateurConnecte)).build();
+ }
+
+ @Override
+ public Response update(HttpHeaders headers, String id, RemoteConfiguration entity) {
+ stopIfUrlNotValid(entity.getUrl());
+ return Response.ok(manager.updateAndSend(id, entity, utilisateurConnecte)).build();
+ }
+
+ @Override
+ public Response delete(HttpHeaders headers, String id) {
+ manager.deleteAndSend(id, utilisateurConnecte);
+ return Response.ok().build();
+ }
+
+ private void stopIfUrlNotValid(String url) {
+ try {
+ new URL(url).toURI();
+ } catch (Exception e) {
+ throw new ApplicationForbidenException("URL not valide");
+ }
+
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/DasboardTypeFichierSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/DasboardTypeFichierSearchRSImpl.java
new file mode 100644
index 0000000..102ab89
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/DasboardTypeFichierSearchRSImpl.java
@@ -0,0 +1,59 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.searchs.DashboardFichierManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.DasboardTypeFichierSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = "", path = "", description = "")
+@Path("dashboard-fichier-search")
+public class DasboardTypeFichierSearchRSImpl implements DasboardTypeFichierSearchRS {
+
+ @Inject
+ private DashboardFichierManager manager;
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ private String username;
+
+ public DasboardTypeFichierSearchRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ this.username = username;
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, String referentiel, Integer pageNumber, Integer pagesize, TypeFichierSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.tableauBordTypeFichiers(username, referentiel, searchEntity, pageNumber, pagesize)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, String referentiel, TypeFichierSearch searchEntity) {
+ return manager.countTableauBordTypeFichiers(username, referentiel, searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/GlobalDasboardTypeFichierSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/GlobalDasboardTypeFichierSearchRSImpl.java
new file mode 100644
index 0000000..158f47b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/GlobalDasboardTypeFichierSearchRSImpl.java
@@ -0,0 +1,42 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.searchs.DashboardFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserTypeFichierManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.DasboardTypeFichierSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("dashboard-global-fichier-search")
+public class GlobalDasboardTypeFichierSearchRSImpl implements DasboardTypeFichierSearchRS {
+
+ @Inject
+ private DashboardFichierManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, String referentiel, Integer pageNumber, Integer pagesize, TypeFichierSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.tableauBordGlobalTypeFichiers(referentiel, searchEntity, pageNumber, pagesize)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, String referentiel, TypeFichierSearch searchEntity) {
+ return manager.countTableauBordGlobalTypeFichiers(referentiel, searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ParticipantSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ParticipantSearchRSImpl.java
new file mode 100644
index 0000000..7aa7ea7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ParticipantSearchRSImpl.java
@@ -0,0 +1,52 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ParticipantManager;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.ParticipantSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("participant-search")
+public class ParticipantSearchRSImpl implements ParticipantSearchRS {
+
+ @Inject
+ private ParticipantManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ List<ParticipantSlimDto> dtos = manager
+ .findAll(null)
+ .stream()
+ .map(p -> mapper.partcipantToPartcipantSlimDto(p))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, ParticipantSearch searchEntity) {
+ List<ParticipantSlimDto> dtos = manager
+ .findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(p -> mapper.partcipantToPartcipantSlimDto(p))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, ParticipantSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ReferentielSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ReferentielSearchRSImpl.java
new file mode 100644
index 0000000..b77da81
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/ReferentielSearchRSImpl.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ReferentielSlimDto;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.model.referentiel.dtos.ReferentielSlimResponse;
+import com.megatim.fdxconsultation.model.searchentities.ReferentielSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.ReferentielSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("referentiel-search")
+public class ReferentielSearchRSImpl implements ReferentielSearchRS {
+
+ @Inject
+ private ReferentielManager manager;
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ List<ReferentielSlimResponse> dtos = manager
+ .all()
+ .stream()
+ .map(r -> new ReferentielSlimResponse(r))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, ReferentielSearch searchEntity) {
+ List<ReferentielSlimResponse> dtos = manager
+ .findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(r -> new ReferentielSlimResponse(r))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, ReferentielSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/RoleSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/RoleSearchRSImpl.java
new file mode 100644
index 0000000..34acdc6
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/RoleSearchRSImpl.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.model.dto.RoleDto;
+import com.megatim.fdxconsultation.model.dto.RoleSlimDto;
+import com.megatim.fdxconsultation.model.searchentities.RoleSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.RoleSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("role-search")
+public class RoleSearchRSImpl implements RoleSearchRS {
+
+ @Inject
+ private RoleManager manager;
+
+ @Inject
+ private com.megatim.fdxconsultation.model.mappers.MapStructMapper mapper;
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ List<RoleDto> dtos = manager.findAll()
+ .stream()
+ .map(t -> mapper.roleToRoleDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, RoleSearch searchEntity) {
+ List<RoleDto> data = manager.findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapper.roleToRoleDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(data).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, RoleSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordGlobalSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordGlobalSearchRSImpl.java
new file mode 100644
index 0000000..3f85e88
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordGlobalSearchRSImpl.java
@@ -0,0 +1,48 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordGlobalSearchManager;
+import com.megatim.fdxconsultation.core.impl.stats.ConvertedTableauBordResponse;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordGlobalSearch;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordFlatResponse;
+import com.megatim.fdxconsultation.service.ifaces.searchs.GlobalDasboardSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("tableau-bord-global-search")
+public class TableauBordGlobalSearchRSImpl implements GlobalDasboardSearchRS {
+
+ @Inject
+ private TableauBordGlobalSearchManager manager;
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, TableauBordGlobalSearch searchEntity) {
+
+ List<TableauBordFlatResponse> response = manager
+ .findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(tableauBord -> new ConvertedTableauBordResponse(tableauBord).tableauBordFlatResponse())
+ .collect(Collectors.toList());
+
+ return Response.ok(response).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, TableauBordGlobalSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordSearchRSImpl.java
new file mode 100644
index 0000000..7064787
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TableauBordSearchRSImpl.java
@@ -0,0 +1,57 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordUserSpecificSearchManager;
+import com.megatim.fdxconsultation.core.impl.stats.ConvertedTableauBordResponse;
+import com.megatim.fdxconsultation.model.searchentities.TableauBordSpecificSearch;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordFlatResponse;
+import com.megatim.fdxconsultation.service.ifaces.searchs.TableauBordSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = "", path = "", description = "")
+@Path("tableau-bord-search")
+public class TableauBordSearchRSImpl implements TableauBordSearchRS {
+
+ @Inject
+ private TableauBordUserSpecificSearchManager manager;
+
+ private String username;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ this.username = username;
+ }
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, TableauBordSpecificSearch searchEntity) {
+ searchEntity.setUserName(username);
+ List<TableauBordFlatResponse> response
+ = manager.findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(tableauBord -> new ConvertedTableauBordResponse(tableauBord).tableauBordFlatResponse())
+ .collect(Collectors.toList());
+ return Response.ok(response).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, TableauBordSpecificSearch searchEntity) {
+ searchEntity.setUserName(username);
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielForUserSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielForUserSearchRSImpl.java
new file mode 100644
index 0000000..715ba16
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielForUserSearchRSImpl.java
@@ -0,0 +1,51 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.searchs.TypeFichierReferentielManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.TypeFichierReferentielSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("type-fichier-referentiel-for-user-search")
+@SecuredClass(module = "", path = "", description = "")
+public class TypeFichierReferentielForUserSearchRSImpl implements TypeFichierReferentielSearchRS {
+
+ @Inject
+ private TypeFichierReferentielManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ private String username;
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ this.username = username;
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, TypeFichierReferentielSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.all(username, pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, TypeFichierReferentielSearch searchEntity) {
+ return manager.count(username, searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielSearchRSImpl.java
new file mode 100644
index 0000000..f2351d3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierReferentielSearchRSImpl.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.searchs.TypeFichierReferentielManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierReferentielSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.TypeFichierReferentielSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("type-fichier-referentiel-search")
+public class TypeFichierReferentielSearchRSImpl implements TypeFichierReferentielSearchRS {
+
+ @Inject
+ private TypeFichierReferentielManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, TypeFichierReferentielSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.all(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, TypeFichierReferentielSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierSearchRSImpl.java
new file mode 100644
index 0000000..13726fd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/TypeFichierSearchRSImpl.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.TypeFichierSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("type-fichier-search")
+public class TypeFichierSearchRSImpl implements TypeFichierSearchRS {
+
+ @Inject
+ private TypeFichierManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ List<TypeFichierSlimDto> dtos = manager.findAll(null)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, TypeFichierSearch searchEntity) {
+ List<TypeFichierSlimDto> data = manager.findWithPagination(pageNumber, pagesize, searchEntity)
+ .stream()
+ .map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(data).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, TypeFichierSearch searchEntity) {
+ return manager.count(searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserParticipantSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserParticipantSearchRSImpl.java
new file mode 100644
index 0000000..c1609ce
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserParticipantSearchRSImpl.java
@@ -0,0 +1,79 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.ParticipantSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserParticipantManager;
+import com.megatim.fdxconsultation.model.searchentities.ParticipantSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.UserParticipantSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = "", path = "", description = "")
+@Path("user-participant-search")
+public class UserParticipantSearchRSImpl implements UserParticipantSearchRS {
+
+ @Inject
+ private UserParticipantManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ private UserManager userManager;
+
+ private String username;
+
+ public UserParticipantSearchRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ this.username = username;
+ }
+
+ @Override
+ public Response formData(HttpHeaders headers) {
+ List<ParticipantSlimDto> dtos = manager.findUserParticipants(this.username)
+ .stream().
+ map(t -> mapper.participantToParticipantSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, Integer pageNumber, Integer pagesize, ParticipantSearch searchEntity) {
+ List<ParticipantSlimDto> dtos = manager.findUserParticipantsWithPagination(this.username, searchEntity, pageNumber, pagesize)
+ .stream().
+ map(t -> mapper.participantToParticipantSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, ParticipantSearch searchEntity) {
+ Long val = manager.countUserParticipants(this.username, searchEntity);
+ System.out.println("countFormData----------------------------------"+this.username+"------------------------------"+val);
+ return val;
+ }
+
+ @Override
+ public Response formDataFindAll(HttpHeaders headers, ParticipantSearch searchEntity) {
+ List<ParticipantSlimDto> dtos = manager.findAllUserParticipants(this.username, searchEntity)
+ .stream().
+ map(t -> mapper.participantToParticipantSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierSearchRSImpl.java
new file mode 100644
index 0000000..9d99b15
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierSearchRSImpl.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserTypeFichierManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.UserTypeFichierSearchRS;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("user-type-fichier-search")
+public class UserTypeFichierSearchRSImpl implements UserTypeFichierSearchRS {
+
+ @Inject
+ private UserTypeFichierManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Override
+ public Response formData(HttpHeaders headers, String userName) {
+ List<TypeFichierSlimDto> dtos = manager.findUserTypeFichiers(userName)
+ .stream().
+ map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, String userName, Integer pageNumber, Integer pagesize, TypeFichierSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.findUserTypeFichiersWithPagination(userName, searchEntity, pageNumber, pagesize)
+ .stream().
+ map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, String userName, TypeFichierSearch searchEntity) {
+ return manager.countUserTypeFichiers(userName, searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierWithReferentielSearchRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierWithReferentielSearchRSImpl.java
new file mode 100644
index 0000000..29df4f5
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/searchs/UserTypeFichierWithReferentielSearchRSImpl.java
@@ -0,0 +1,55 @@
+package com.megatim.fdxconsultation.service.impl.searchs;
+
+import com.megatim.fdxcommons.model.dtos.referentiel.TypeFichierSlimDto;
+import com.megatim.fdxcommons.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.core.ifaces.searchs.UserTypeFichierManager;
+import com.megatim.fdxconsultation.model.searchentities.TypeFichierSearch;
+import com.megatim.fdxconsultation.service.ifaces.searchs.UserTypeFichierWithReferentielSearchRS;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@SecuredClass(module = "", path = "", description = "")
+@Path("user-type-fichier-referentiel-search")
+public class UserTypeFichierWithReferentielSearchRSImpl implements UserTypeFichierWithReferentielSearchRS {
+
+ @Inject
+ private UserTypeFichierManager manager;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ private String username;
+
+ public UserTypeFichierWithReferentielSearchRSImpl() {
+ super();
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ this.username = username;
+ }
+
+ @Override
+ public Response formDataWithPagination(HttpHeaders headers, String referentiel, Integer pageNumber, Integer pagesize, TypeFichierSearch searchEntity) {
+ List<TypeFichierSlimDto> dtos = manager.findUserTypeFichiersInReferentielWithPagination(username, referentiel, searchEntity, pageNumber, pagesize)
+ .stream().
+ map(t -> mapper.typeFichierToTypeFichierSlimDto(t))
+ .collect(Collectors.toList());
+ return Response.ok(dtos).build();
+ }
+
+ @Override
+ public Long countFormData(HttpHeaders headers, String referentiel, TypeFichierSearch searchEntity) {
+ return manager.countUserTypeFichiersInReferentiel(username, referentiel, searchEntity);
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/DisplayOptionsRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/DisplayOptionsRSImpl.java
new file mode 100644
index 0000000..7c8edd8
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/DisplayOptionsRSImpl.java
@@ -0,0 +1,38 @@
+package com.megatim.fdxconsultation.service.impl.settings;
+
+import com.megatim.fdxconsultation.core.ifaces.settings.DisplayOptionsManager;
+import com.megatim.fdxconsultation.model.settings.DisplayOptions;
+import com.megatim.fdxconsultation.service.ifaces.settings.DisplayOptionsRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.SecuredClass;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("display-options")
+@SecuredClass(module = AppCommonContext.MODULE_ADMINISTRATION, path = "Options affichage", description = "Fdx serveur")
+public class DisplayOptionsRSImpl implements DisplayOptionsRS {
+
+ @Inject
+ private DisplayOptionsManager manager;
+
+ @Override
+ public Response current(HttpHeaders headers) {
+ return Response
+ .ok(manager.current())
+ .build();
+ }
+
+ @Override
+ public Response edit(HttpHeaders headers, DisplayOptions displayOptions) {
+ return Response
+ .ok(manager.edit(displayOptions))
+ .build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/SettingRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/SettingRSImpl.java
new file mode 100644
index 0000000..2b3556c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/settings/SettingRSImpl.java
@@ -0,0 +1,28 @@
+package com.megatim.fdxconsultation.service.impl.settings;
+
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxconsultation.core.ifaces.settings.SettingsManager;
+import com.megatim.fdxconsultation.model.referentiel.dtos.ReferentielSlimResponse;
+import com.megatim.fdxconsultation.service.ifaces.settings.SettingRS;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Path("settings")
+public class SettingRSImpl implements SettingRS {
+
+ @Inject
+ private SettingsManager settingManager;
+
+ @Override
+ public Response currentReferentiel(HttpHeaders headers) {
+ Referentiel referentiel = settingManager.currentReferentiel();
+ return Response.ok(referentiel != null ? new ReferentielSlimResponse(referentiel) : null).build();
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java
new file mode 100644
index 0000000..6729b5d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/AdministrationCronBean.java
@@ -0,0 +1,157 @@
+/*
+ * 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.service.impl.sockets;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.fdxcommons.model.enumeration.EtatOperation;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.AdministrationNumberDto;
+import com.megatim.fdxconsultation.model.dto.InformationGeneraleDto;
+import com.megatim.fdxconsultation.model.dto.UserDto;
+import com.megatim.fdxconsultation.model.message.systeme.ApplicationData;
+import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.ejb.LocalBean;
+import javax.ejb.Schedule;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import javax.websocket.Session;
+
+@Singleton
+@Startup
+@LocalBean
+public class AdministrationCronBean {
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private RoleManager roleManager;
+
+ @PostConstruct
+ public void init() {
+
+ }
+
+// @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false)
+ public void refreshDatas() {
+
+ //Variables
+ ApplicationData message = new ApplicationData();
+ InformationGeneraleDto informationGeneraleDto = null;
+ AdministrationNumberDto administrationNumberDto = null;
+ Iterator<String> iterateur = null;
+ String idSession = null;
+ Session session = null;
+ User utilisateur = null;
+ User utilisateurBD = null;
+
+ try {
+
+ //On crée une instance de l'iterateur
+ iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+
+ //On construit l'objet AdministrationNumberDto
+ administrationNumberDto = new AdministrationNumberDto();
+ administrationNumberDto.setUtilisateursEnAttenteValidation(countUsers(EtatOperation.ATTENTE_VALIDATION));
+ administrationNumberDto.setRolesEnAttenteValidation(countRoles(EtatOperation.ATTENTE_VALIDATION));
+
+ //On construit l'objet InformationGeneraleDto
+ informationGeneraleDto = new InformationGeneraleDto();
+
+ //On parcourt la liste des sessions
+ while (iterateur.hasNext()) {
+
+ //On recupère l'id de la session
+ idSession = iterateur.next();
+
+ //On filtre par type
+ if (UserSesionApplication.getInstance().getUsers() != null && UserSesionApplication.getInstance().getUsers().get(idSession) != null
+ && (UserSesionApplication.getInstance().getUsers().get(idSession).getType() != null
+ && UserSesionApplication.getInstance().getUsers().get(idSession).getType().equalsIgnoreCase(AppCommonContext.CODE_WEB_SOCKET_PATH_APPLICATION_MESSAGE))) {
+
+ //On recupère la session
+ session = UserSesionApplication.getInstance().getUsers().get(idSession).getSession();
+
+ //On recupère l'utilisateur associé à cette session
+ utilisateur = UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur();
+ utilisateurBD = userManager.findById(utilisateur.getId());
+
+ //Si non null
+ if (utilisateurBD != null) {
+
+ //On set la clé de la session
+ informationGeneraleDto.setSessionKeyUser(utilisateurBD.getCleSession());
+
+ }
+
+ //On hydrate le message
+ message.setInformationGeneraleDto(informationGeneraleDto);
+ message.setAdministrationNumberDto(administrationNumberDto);
+ message.setUtlisateursConnectes(obtenirListeUtilisateursConnectes());
+
+ //On envoie le message
+ UserSesionApplication.getInstance().send(session, message);
+
+ }
+
+ }
+
+ } catch (Exception ex) {
+
+ //On affiche les erreurs
+ ex.printStackTrace();
+
+ }
+
+ }
+
+ /**
+ * Methode permettant de recuperer la liste des utilisateurs connectés
+ *
+ * @return
+ */
+ private List<UserDto> obtenirListeUtilisateursConnectes() {
+ List<UserDto> liste = new ArrayList<UserDto>();
+ String idSession = null;
+ Iterator<String> iterateur = null;
+ UserDto userDto = null;
+ iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+ while (iterateur.hasNext()) {
+ idSession = iterateur.next();
+ userDto = new UserDto();
+ userDto.setUserName(UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur().getUserName());
+ liste.add(userDto);
+ }
+ return liste;
+ }
+
+ private long countUsers(EtatOperation etatOperation) {
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+ requeteur.addEq("etatOperation", etatOperation);
+ return userManager.count(requeteur.getPredicats());
+ }
+
+ private long countRoles(EtatOperation etatOperation) {
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+ requeteur.addEq("etatOperation", etatOperation);
+ return roleManager.count(requeteur.getPredicats());
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ApplicationEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ApplicationEndpoint.java
new file mode 100644
index 0000000..79456ee
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ApplicationEndpoint.java
@@ -0,0 +1,84 @@
+/*
+ * 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.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.message.systeme.MessageDecoder;
+import com.megatim.fdxconsultation.model.message.systeme.MessageEncoder;
+import com.megatim.fdxconsultation.model.message.systeme.ApplicationData;
+import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.io.IOException;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author
+ */
+@ServerEndpoint(
+ value = "/application/{id}",
+ decoders = MessageDecoder.class,
+ encoders = MessageEncoder.class)
+public class ApplicationEndpoint {
+
+ private final UserSesionApplication userSesion = UserSesionApplication.getInstance();
+
+ @Inject
+ private UserManager userManager;
+
+ @OnOpen
+ public void onOpen(
+ Session session,
+ @PathParam("id") Long id) throws IOException, EncodeException {
+
+ //Variables
+ User utilisateur = null;
+
+ //Si id renseigné
+ if(id != null){
+ utilisateur = userManager.findById(id);
+ }
+
+ //Si non null
+ if(utilisateur != null){
+
+ //On conserve la session et l'utilisateur associé
+ userSesion.addSession(utilisateur, session, AppCommonContext.CODE_WEB_SOCKET_PATH_APPLICATION_MESSAGE);
+
+ }
+
+ }
+
+ @OnMessage
+ public void onMessage(Session session, ApplicationData message)
+ throws IOException, EncodeException {
+ }
+
+ @OnClose
+ public void onClose(Session session) throws IOException, EncodeException {
+
+ //On supprime la session
+ userSesion.removeSession(session);
+
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+
+ //On affiche le message d'erreur
+ throwable.printStackTrace();
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ConnexionStatutEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ConnexionStatutEndpoint.java
new file mode 100644
index 0000000..42738c2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/ConnexionStatutEndpoint.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ConnexionStatutsDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ConnexionStatutsEncoder;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.ConnexionStatutSessionHandler;
+import javax.inject.Inject;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author lenovo
+ */
+@ServerEndpoint(value = "/connexion-status",
+ encoders = {ConnexionStatutsEncoder.class},
+ decoders = {ConnexionStatutsDecoder.class}
+)
+public class ConnexionStatutEndpoint {
+
+ @Inject
+ private ConnexionStatutSessionHandler connexionStatutSessionHandler;
+
+ @OnOpen
+ public void onOpen(Session session) {
+ connexionStatutSessionHandler.addSession(session);
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ connexionStatutSessionHandler.removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ connexionStatutSessionHandler.removeSession(session);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/DataProductionEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/DataProductionEndpoint.java
new file mode 100644
index 0000000..7281337
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/DataProductionEndpoint.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.DataProductionDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.DataProductionEncoder;
+import com.megatim.fdxconsultation.core.impl.sockets.DataProductionSessionHandler;
+import javax.inject.Inject;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author lenovo
+ */
+@ServerEndpoint(value = "/data-production",
+ encoders = {DataProductionEncoder.class},
+ decoders = {DataProductionDecoder.class}
+)
+public class DataProductionEndpoint {
+
+ @Inject
+ private DataProductionSessionHandler dataProductionSessionHandler;
+
+ @OnOpen
+ public void onOpen(Session session) {
+ dataProductionSessionHandler.addSession(session);
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ dataProductionSessionHandler.removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ dataProductionSessionHandler.removeSession(session);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/FichiersEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/FichiersEndpoint.java
new file mode 100644
index 0000000..62fd8b1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/FichiersEndpoint.java
@@ -0,0 +1,55 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersEncoder;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author lenovo
+ */
+@ServerEndpoint(value = "/fichiers/{username}",
+ encoders = {ParticipantToFichiersEncoder.class},
+ decoders = {ParticipantToFichiersDecoder.class}
+)
+public class FichiersEndpoint {
+
+ @Inject
+ private TypeFichierManager manager;
+
+ @OnOpen
+ public void onOpen(Session session, @PathParam("username") String username) {
+ try {
+ session.getBasicRemote().sendObject(manager.particpantToFichierDto(username));
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(FichiersEndpoint.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ @OnMessage
+ public void onMessage(Map<String, List<String>> message, Session session) {
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessageSystemeEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessageSystemeEndpoint.java
new file mode 100644
index 0000000..ef8524c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessageSystemeEndpoint.java
@@ -0,0 +1,87 @@
+/*
+ * 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.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.message.systeme.MessageDecoder;
+import com.megatim.fdxconsultation.model.message.systeme.MessageEncoder;
+import com.megatim.fdxconsultation.model.message.systeme.ApplicationData;
+import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.io.IOException;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author
+ */
+@ServerEndpoint(
+ value = "/application/message/{id}",
+ decoders = MessageDecoder.class,
+ encoders = MessageEncoder.class)
+public class MessageSystemeEndpoint {
+
+ private final UserSesionApplication userSesion = UserSesionApplication.getInstance();
+
+ @Inject
+ private UserManager userManager;
+
+ @OnOpen
+ public void onOpen(
+ Session session,
+ @PathParam("id") Long id) throws IOException, EncodeException {
+
+ //Variables
+ User utilisateur = null;
+
+ //Si id renseigné
+ if(id != null){
+
+ //On recupère l'utilisateur
+ utilisateur = userManager.findById(id);
+
+ }
+
+ //Si non null
+ if(utilisateur != null){
+
+ //On conserve la session et l'utilisateur associé
+ userSesion.addSession(utilisateur, session, AppCommonContext.CODE_WEB_SOCKET_PATH_SYSTEME_MESSAGE);
+
+ }
+
+ }
+
+ @OnMessage
+ public void onMessage(Session session, ApplicationData message)
+ throws IOException, EncodeException {
+ }
+
+ @OnClose
+ public void onClose(Session session) throws IOException, EncodeException {
+
+ //On supprime la session
+ userSesion.removeSession(session);
+
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+
+ //On affiche le message d'erreur
+ throwable.printStackTrace();
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessagesSystemeCronBean.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessagesSystemeCronBean.java
new file mode 100644
index 0000000..4e784cc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/MessagesSystemeCronBean.java
@@ -0,0 +1,103 @@
+/*
+ * 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.service.impl.sockets;
+
+/**
+ *
+ * @author Lenovo P53
+ */
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.message.systeme.MessageSystemeManager;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.dto.MessageSystemeDto;
+import com.megatim.fdxconsultation.model.message.systeme.ApplicationData;
+import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.util.Iterator;
+import javax.annotation.PostConstruct;
+import javax.ejb.LocalBean;
+import javax.ejb.Schedule;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import javax.websocket.Session;
+
+@Singleton
+@Startup
+@LocalBean
+public class MessagesSystemeCronBean {
+
+ @Inject
+ private MessageSystemeManager messageSystemeManager;
+
+ @Inject
+ private UserManager userManager;
+
+ @PostConstruct
+ public void init() {
+
+ }
+
+ @Schedule(second = "*/3", minute = "*", hour = "*", persistent = false)
+ public void refreshDatas() {
+
+ //Variables
+ ApplicationData message = new ApplicationData();
+ MessageSystemeDto messageSystemeDto = null;
+ Iterator<String> iterateur = null;
+ String idSession = null;
+ Session session = null;
+ User utilisateur = null;
+
+ try {
+
+ //On crée une instance de l'iterateur
+ iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator();
+
+ //On parcourt la liste des sessions
+ while(iterateur.hasNext()){
+
+ //On recupère l'id de la session
+ idSession = iterateur.next();
+
+ //On filtre par type
+ if(UserSesionApplication.getInstance().getUsers() != null && UserSesionApplication.getInstance().getUsers().get(idSession) != null
+ && (UserSesionApplication.getInstance().getUsers().get(idSession).getType() != null
+ && UserSesionApplication.getInstance().getUsers().get(idSession).getType().equalsIgnoreCase(AppCommonContext.CODE_WEB_SOCKET_PATH_SYSTEME_MESSAGE))){
+
+ //On recupère la session
+ session = UserSesionApplication.getInstance().getUsers().get(idSession).getSession();
+
+ //On recupère l'utilisateur associé à cette session
+ utilisateur = UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur();
+
+ //On recupère le message système
+ messageSystemeDto = messageSystemeManager.recupererUnMessageSystemeDto(utilisateur);
+
+ //Si non null
+ if(messageSystemeDto != null){
+
+ //On hydrate le message
+ message.setMessageSystemeDto(messageSystemeDto);
+
+ //On envoie le message
+ UserSesionApplication.getInstance().send(session, message);
+
+ }
+
+ }
+
+ }
+
+ } catch (Exception ex) {
+
+ //On affiche les erreurs
+ ex.printStackTrace();
+
+ }
+
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/StandaloneServerStateEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/StandaloneServerStateEndpoint.java
new file mode 100644
index 0000000..9af36d2
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/StandaloneServerStateEndpoint.java
@@ -0,0 +1,64 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.StandaloneServerStateEntityDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.StandaloneServerStateEntityEncoder;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.StandaloneServerStateSessionHandler;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author lenovo
+ */
+@ServerEndpoint(value = "/standalone-server-state",
+ encoders = {StandaloneServerStateEntityEncoder.class},
+ decoders = {StandaloneServerStateEntityDecoder.class}
+)
+public class StandaloneServerStateEndpoint {
+
+ @Inject
+ private StandaloneServerStateSessionHandler standaloneServerStateSessionHandler;
+
+ @Inject
+ private StandaloneServerStateEntityManager standaloneServerStateEntityManager;
+
+ @OnOpen
+ public void onOpen(Session session) {
+
+ if (standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity() != null) {
+ try {
+ session.getBasicRemote().sendObject(standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity());
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ standaloneServerStateSessionHandler.addSession(session);
+ }
+
+ @OnMessage
+ public void onMessage(StandaloneServerStateEntity message, Session session) {
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ standaloneServerStateSessionHandler.removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ standaloneServerStateSessionHandler.removeSession(session);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsEndpoint.java
new file mode 100644
index 0000000..0b4f46b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsEndpoint.java
@@ -0,0 +1,75 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersEncoder;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author ASUS
+ */
+@ServerEndpoint(value = "/tableaubord/{username}",
+ encoders = {ParticipantToFichiersEncoder.class},
+ decoders = {ParticipantToFichiersDecoder.class}
+)
+public class TableauBordsEndpoint {
+
+ @Inject
+ private TableauBordManager manager;
+
+ @Inject
+ private UserSessionBean userSessionBean;
+
+ @OnOpen
+ public void onOpen(Session session, @PathParam("username") String username) {
+ try {
+ session.getBasicRemote().sendObject(manager.userTableauBordToTypeFichiers(username));
+ userSessionBean.getSessionMap().put(username, session);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(FichiersEndpoint.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ @OnMessage
+ public void onMessage(Map<String, List<String>> message, Session session) {
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ removeSession(session);
+ }
+
+ private void removeSession(Session session) {
+ String userName = null;
+
+ for (Entry<String, Session> e : userSessionBean.getSessionMap().entrySet()) {
+ if (e.getValue().getId().equals(session.getId())) {
+ userName = e.getKey();
+ break;
+ }
+ }
+ if (userName != null) {
+ userSessionBean.getSessionMap().remove(userName);
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsGlobalEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsGlobalEndpoint.java
new file mode 100644
index 0000000..edc1ac3
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TableauBordsGlobalEndpoint.java
@@ -0,0 +1,54 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersEncoder;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.TableauBordGlobalSessionHandler;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author ASUS
+ */
+@ServerEndpoint(value = "/tableaubord-global",
+ encoders = {ParticipantToFichiersEncoder.class},
+ decoders = {ParticipantToFichiersDecoder.class}
+)
+public class TableauBordsGlobalEndpoint {
+
+ @Inject
+ private TableauBordGlobalSessionHandler tableauBordGlobalSessionHandler;
+
+ @Inject
+ private TableauBordManager manager;
+
+ @OnOpen
+ public void onOpen(Session session) {
+ try {
+ session.getBasicRemote().sendObject(manager.globalTableauBordToTypeFichiers());
+ tableauBordGlobalSessionHandler.addSession(session);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(TableauBordsGlobalEndpoint.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ tableauBordGlobalSessionHandler.removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ tableauBordGlobalSessionHandler.removeSession(session);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TransfertEndpoint.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TransfertEndpoint.java
new file mode 100644
index 0000000..e4f02c4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/TransfertEndpoint.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.sockets;
+
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.TranfertDecoder;
+import com.megatim.fdxconsultation.service.impl.sockets.encoders.TransfertEncoder;
+import com.megatim.fdxconsultation.service.impl.sockets.helpers.TransfertDataMessageSessionHandler;
+import javax.inject.Inject;
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+
+/**
+ *
+ * @author lenovo
+ */
+@ServerEndpoint(value = "/transferts",
+ encoders = {TransfertEncoder.class},
+ decoders = {TranfertDecoder.class}
+)
+public class TransfertEndpoint {
+
+ @Inject
+ private TransfertDataMessageSessionHandler transfertDataMessageSessionHandler;
+
+ @OnOpen
+ public void onOpen(Session session) {
+ transfertDataMessageSessionHandler.addSession(session);
+ }
+
+ @OnClose
+ public void onClose(Session session) {
+ transfertDataMessageSessionHandler.removeSession(session);
+ }
+
+ @OnError
+ public void onError(Session session, Throwable throwable) {
+ transfertDataMessageSessionHandler.removeSession(session);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/UserSessionBean.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/UserSessionBean.java
new file mode 100644
index 0000000..16f95e4
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/UserSessionBean.java
@@ -0,0 +1,23 @@
+/*
+ * 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.service.impl.sockets;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import javax.enterprise.context.ApplicationScoped;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class UserSessionBean {
+ private final Map<String, Session> sessionMap = new ConcurrentHashMap<>();
+
+ public Map<String, Session> getSessionMap() {
+ return sessionMap;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsDecoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsDecoder.java
new file mode 100644
index 0000000..b10120e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsDecoder.java
@@ -0,0 +1,40 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fdx.messaging.common.ConnexionStatut;
+import java.util.List;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ConnexionStatutsDecoder implements Decoder.Text<List<ConnexionStatut>> {
+
+ private ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public List<ConnexionStatut> decode(String s) throws DecodeException {
+ try {
+ return objectMapper.readValue(s, new TypeReference<List<ConnexionStatut>>() {});
+ } catch (Exception e) {
+ throw new DecodeException(s, "Unable to decode message", e);
+ }
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return s != null;
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsEncoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsEncoder.java
new file mode 100644
index 0000000..acebc85
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ConnexionStatutsEncoder.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fdx.messaging.common.ConnexionStatut;
+import java.util.List;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ConnexionStatutsEncoder implements Encoder.Text<List<ConnexionStatut>> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public String encode(List<ConnexionStatut> message) throws EncodeException {
+ try {
+ return objectMapper.writeValueAsString(message);
+ } catch (JsonProcessingException e) {
+ throw new EncodeException(message, "Unable to encode message", e);
+ }
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionDecoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionDecoder.java
new file mode 100644
index 0000000..d14aec1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionDecoder.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class DataProductionDecoder implements Decoder.Text<CommonDataProduction> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public CommonDataProduction decode(String s) throws DecodeException {
+ try {
+ return objectMapper.readValue(s, new TypeReference<CommonDataProduction>() {
+ });
+ } catch (IOException e) {
+ throw new DecodeException(s, "Unable to decode map", e);
+ }
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return s != null;
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionEncoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionEncoder.java
new file mode 100644
index 0000000..c211889
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/DataProductionEncoder.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.megatim.fdxcommons.model.dataproduction.CommonDataProduction;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class DataProductionEncoder implements Encoder.Text<CommonDataProduction> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public String encode(CommonDataProduction dataProduction) throws EncodeException {
+ try {
+ return objectMapper.writeValueAsString(dataProduction);
+ } catch (JsonProcessingException e) {
+ throw new EncodeException(dataProduction, "Unable to encode message", e);
+ }
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersDecoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersDecoder.java
new file mode 100644
index 0000000..7fb4a3e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersDecoder.java
@@ -0,0 +1,40 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.List;
+import java.util.Map;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ParticipantToFichiersDecoder implements Decoder.Text<Map<String, List<String>>> {
+
+ private ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public Map<String, List<String>> decode(String s) throws DecodeException {
+ try {
+ return objectMapper.readValue(s, new TypeReference<Map<String, List<String>>>() {});
+ } catch (Exception e) {
+ throw new DecodeException(s, "Unable to decode map", e);
+ }
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return s != null;
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersEncoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersEncoder.java
new file mode 100644
index 0000000..8dc2490
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/ParticipantToFichiersEncoder.java
@@ -0,0 +1,35 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.List;
+import java.util.Map;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class ParticipantToFichiersEncoder implements Encoder.Text<Map<String, List<String>>> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public String encode(Map<String, List<String>> map) throws EncodeException {
+ try {
+ return objectMapper.writeValueAsString(map);
+ } catch (JsonProcessingException e) {
+ throw new EncodeException(map, "Unable to encode map", e);
+ }
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityDecoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityDecoder.java
new file mode 100644
index 0000000..3c10e53
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityDecoder.java
@@ -0,0 +1,39 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class StandaloneServerStateEntityDecoder implements Decoder.Text<StandaloneServerStateEntity> {
+
+ private ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public StandaloneServerStateEntity decode(String s) throws DecodeException {
+ try {
+ return objectMapper.readValue(s, new TypeReference<StandaloneServerStateEntity>() {});
+ } catch (Exception e) {
+ throw new DecodeException(s, "Unable to decode map", e);
+ }
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return s != null;
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityEncoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityEncoder.java
new file mode 100644
index 0000000..d99f845
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/StandaloneServerStateEntityEncoder.java
@@ -0,0 +1,34 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class StandaloneServerStateEntityEncoder implements Encoder.Text<StandaloneServerStateEntity> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public String encode(StandaloneServerStateEntity msg) throws EncodeException {
+ try {
+ return objectMapper.writeValueAsString(msg);
+ } catch (JsonProcessingException e) {
+ throw new EncodeException(msg, "Unable to encode message", e);
+ }
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TranfertDecoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TranfertDecoder.java
new file mode 100644
index 0000000..d72c64d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TranfertDecoder.java
@@ -0,0 +1,41 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import java.io.IOException;
+import javax.websocket.DecodeException;
+import javax.websocket.Decoder;
+import javax.websocket.EndpointConfig;
+
+/**
+ *
+ * @author lenovo
+ */
+public class TranfertDecoder implements Decoder.Text<Transfert> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public Transfert decode(String s) throws DecodeException {
+ try {
+ return objectMapper.readValue(s, new TypeReference<Transfert>() {
+ });
+ } catch (IOException e) {
+ throw new DecodeException(s, "Unable to decode map", e);
+ }
+ }
+
+ @Override
+ public boolean willDecode(String s) {
+ return s != null;
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TransfertEncoder.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TransfertEncoder.java
new file mode 100644
index 0000000..e2211e1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/encoders/TransfertEncoder.java
@@ -0,0 +1,40 @@
+package com.megatim.fdxconsultation.service.impl.sockets.encoders;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import javax.websocket.EncodeException;
+import javax.websocket.Encoder;
+import javax.websocket.EndpointConfig;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+
+/**
+ *
+ * @author lenovo
+ */
+public class TransfertEncoder implements Encoder.Text<Transfert> {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Override
+ public String encode(Transfert transfert) throws EncodeException {
+ try {
+
+ objectMapper.registerModule(new JavaTimeModule());
+ objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ return objectMapper.writeValueAsString(transfert);
+ } catch (JsonProcessingException e) {
+ throw new EncodeException(transfert, "Unable to encode transfert data message", e);
+ }
+ }
+
+ @Override
+ public void init(EndpointConfig endpointConfig) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/ConnexionStatutSessionHandler.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/ConnexionStatutSessionHandler.java
new file mode 100644
index 0000000..5c8fb6b
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/ConnexionStatutSessionHandler.java
@@ -0,0 +1,89 @@
+package com.megatim.fdxconsultation.service.impl.sockets.helpers;
+
+import com.fdx.messaging.common.ConnexionStatut;
+import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager;
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+public class ConnexionStatutSessionHandler {
+
+ @Inject
+ StandaloneServerStateEntityManager serverStateManager;
+
+ private final Map<String, Session> idToSessions = new ConcurrentHashMap<>();
+
+ private Timer timer = new Timer();
+
+ public void publishMessage(List<ConnexionStatut> connectedStatuts) {
+ getSessions().forEach(s -> {
+ try {
+ s.getBasicRemote().sendObject(connectedStatuts);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
+ }
+ });
+
+ scheduleTask();
+
+ }
+
+ public void addSession(Session session) {
+ idToSessions.put(session.getId(), session);
+ }
+
+ public void removeSession(Session session) {
+ idToSessions.remove(session.getId());
+ }
+
+ private List<Session> getSessions() {
+ return idToSessions
+ .entrySet()
+ .stream()
+ .map(e -> e.getValue())
+ .collect(Collectors.toList());
+ }
+
+ private void scheduleTask() {
+
+ timer.cancel();
+
+ final long lastPublishTime = System.nanoTime();
+ timer = new Timer();
+ timer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ if (System.nanoTime() - lastPublishTime >= 10_000_000_000L) {
+ StandaloneServerStateEntity stateEntity = serverStateManager.getCurrentStandaloneServerStateEntity();
+ if (stateEntity != null) {
+ List<ConnexionStatut> connectedStatuts = stateEntity.getAgentConfigurations().stream().map(a -> {
+ ConnexionStatut connexionStatut = new ConnexionStatut();
+ connexionStatut.setAgentCode(a.getAgentCode());
+ connexionStatut.setConnected(false);
+ return connexionStatut;
+ }).collect(Collectors.toList());
+
+ publishMessage(connectedStatuts);
+ }
+ }
+ }
+ }, 0, 5000);
+
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/StandaloneServerStateSessionHandler.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/StandaloneServerStateSessionHandler.java
new file mode 100644
index 0000000..5a42513
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/StandaloneServerStateSessionHandler.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.sockets.helpers;
+
+import com.megatim.fdxconsultation.model.supervision.StandaloneServerStateEntity;
+import com.megatim.fdxconsultation.service.impl.sockets.StandaloneServerStateEndpoint;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+public class StandaloneServerStateSessionHandler {
+
+ private final Map<String, Session> idtoSessions = new ConcurrentHashMap<>();
+
+ public void publishMessage(StandaloneServerStateEntity standaloneServerStateEntity) {
+ getSessions().forEach(s -> {
+ try {
+ s.getBasicRemote().sendObject(standaloneServerStateEntity);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
+ }
+ });
+ }
+
+ public void addSession(Session session) {
+ idtoSessions.put(session.getId(), session);
+ }
+
+ public void removeSession(Session session) {
+ idtoSessions.remove(session.getId());
+ }
+
+ private List<Session> getSessions() {
+ return idtoSessions
+ .entrySet()
+ .stream()
+ .map(e -> e.getValue())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TableauBordGlobalSessionHandler.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TableauBordGlobalSessionHandler.java
new file mode 100644
index 0000000..1102eb1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TableauBordGlobalSessionHandler.java
@@ -0,0 +1,51 @@
+/*
+ * 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.service.impl.sockets.helpers;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class TableauBordGlobalSessionHandler {
+ private final Map<String, Session> idToSessions = new ConcurrentHashMap<>();
+
+ public void publishMessage(Map<String, List<String>> participantToTypeFichiers) {
+ getSessions().forEach(s -> {
+ try {
+ s.getBasicRemote().sendObject(participantToTypeFichiers);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
+ }
+ });
+ }
+
+ public void addSession(Session session) {
+ idToSessions.put(session.getId(), session);
+ }
+
+ public void removeSession(Session session) {
+ idToSessions.remove(session.getId());
+ }
+
+ private List<Session> getSessions() {
+ return idToSessions
+ .entrySet()
+ .stream()
+ .map(e -> e.getValue())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TransfertDataMessageSessionHandler.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TransfertDataMessageSessionHandler.java
new file mode 100644
index 0000000..d6c6459
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/sockets/helpers/TransfertDataMessageSessionHandler.java
@@ -0,0 +1,50 @@
+package com.megatim.fdxconsultation.service.impl.sockets.helpers;
+
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.service.impl.camel.consumer.TransfertDataMessageConsumer;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.websocket.EncodeException;
+import javax.websocket.Session;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@ApplicationScoped
+public class TransfertDataMessageSessionHandler {
+
+ private final Map<String, Session> idtoSessions = new ConcurrentHashMap<>();
+
+ public void addSession(Session session) {
+ idtoSessions.put(session.getId(), session);
+ }
+
+ public void removeSession(Session session) {
+ idtoSessions.remove(session.getId());
+ }
+
+ public void sendMessage(Transfert transfert) {
+ getSessions().forEach(session -> {
+ try {
+ session.getBasicRemote().sendObject(transfert);
+ } catch (IOException | EncodeException ex) {
+ Logger.getLogger(TransfertDataMessageConsumer.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ });
+ }
+
+ private List<Session> getSessions() {
+ return idtoSessions
+ .entrySet()
+ .stream()
+ .map(e -> e.getValue())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/startup/StartupBean.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/startup/StartupBean.java
new file mode 100644
index 0000000..b48968c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/startup/StartupBean.java
@@ -0,0 +1,303 @@
+package com.megatim.fdxconsultation.service.impl.startup;
+
+import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer;
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.enumeration.TypeOperation;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.tools.CommonTools;
+import com.megatim.fdxconsultation.core.ifaces.administration.ActionManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager;
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.configuration.CodeStatutHttpManager;
+import com.megatim.fdxconsultation.model.administration.Action;
+import com.megatim.fdxconsultation.model.administration.Role;
+import com.megatim.fdxconsultation.model.administration.User;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import com.megatim.file.model.enumeration.TypeSauvegarde;
+import com.megatim.file.tools.entites.context.FileModuleAppContextEntity;
+import com.mgt.rs.security.core.common.Secured;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import com.megatim.fdxconsultation.core.ifaces.integration.AppColumnDeleter;
+import com.megatim.fdxconsultation.core.impl.dataproductionworker.DataProductionWorkerGroup;
+
+/**
+ *
+ * @author lenovo
+ */
+@Singleton
+@Startup
+public class StartupBean {
+
+ @Inject
+ protected ActionManager actionManager;
+
+ @Inject
+ protected RoleManager roleManager;
+
+ @Inject
+ protected UserManager userManager;
+
+ @Inject
+ protected CodeStatutHttpManager codeStatutHttpManager;
+
+ @Inject
+ private DataInMemoryHandler dataInMemoryHandler;
+
+ @Inject
+ private AppColumnDeleter appColumnDeleter;
+
+ @Inject
+ private DataProductionWorkerGroup dataProductionWorkerGroup;
+
+ @PostConstruct
+ public void init() {
+ dataInMemoryHandler.initializeDataInMemory();
+ addNewActions();
+ addAdmins();
+ ajouterCodeStatusHttp();
+ initializeFileModule();
+ appColumnDeleter.delete();
+ dataProductionWorkerGroup.start();
+ }
+
+ private void initializeFileModule() {
+
+ /* Variabless */
+ List<String> extensionsAutorises = Arrays.asList("pdf", "docx", "rar");
+
+ /* Précise le mode de sauvegarde */
+ FileModuleAppContextEntity.configuration.setModeSauvegarde(TypeSauvegarde.DISQUE);
+
+ /* Précise la taille max des fichiers */
+ FileModuleAppContextEntity.configuration.setTailleUploadMax(10);
+
+ /* Précise la liste des extentations autoriséess */
+ FileModuleAppContextEntity.configuration.setExtensionsAutorisees(extensionsAutorises);
+
+ }
+
+ /**
+ * Methode permettant de charger les codes statuts http
+ */
+ private void ajouterCodeStatusHttp() {
+
+ /* Variables */
+ List<CodeStatutHttp> liste = codeStatutHttpManager.findAll();
+
+ /* On vide le registre */
+ AppContext.registre_codes_http.clear();
+
+ /* Si liste non vide */
+ if (liste == null || liste.isEmpty()) {
+
+ /* On initialise la liste */
+ liste = new ArrayList<CodeStatutHttp>();
+
+ /* 1xx - Informations */
+ liste.add(new CodeStatutHttp("100", "Le serveur a reçu les en-têtes et attend le corps de la requête"));
+ liste.add(new CodeStatutHttp("101", "Le client a demandé un changement de protocole, accepté par le serveur"));
+ liste.add(new CodeStatutHttp("102", "La requête est en cours de traitement"));
+
+ /* 2xx - Succès */
+ liste.add(new CodeStatutHttp("200", "La requête a réussi"));
+ liste.add(new CodeStatutHttp("201", "La requête a abouti à la création d'une ressource"));
+ liste.add(new CodeStatutHttp("202", "La requête a été acceptée, mais le traitement est en cours"));
+ liste.add(new CodeStatutHttp("203", "La réponse contient des informations provenant d'une source tierce"));
+ liste.add(new CodeStatutHttp("204", "La requête a réussi, mais il n'y a pas de contenu à retourner"));
+ liste.add(new CodeStatutHttp("205", "La requête a réussi, le client doit réinitialiser l'interface utilisateur"));
+ liste.add(new CodeStatutHttp("206", "Une partie de la ressource a été envoyée"));
+
+ /* 3xx - Redirections */
+ liste.add(new CodeStatutHttp("300", "Plusieurs options sont disponibles pour la ressource"));
+ liste.add(new CodeStatutHttp("301", "La ressource a été déplacée de manière permanente"));
+ liste.add(new CodeStatutHttp("302", "La ressource a été temporairement déplacée"));
+ liste.add(new CodeStatutHttp("303", "La ressource est disponible à une autre URL"));
+ liste.add(new CodeStatutHttp("304", "La ressource n'a pas été modifiée depuis la dernière requête"));
+ liste.add(new CodeStatutHttp("307", "Redirection temporaire avec conservation de la méthode HTTP"));
+ liste.add(new CodeStatutHttp("308", "Redirection permanente avec conservation de la méthode HTTP"));
+
+ /* 4xx - Erreurs du client */
+ liste.add(new CodeStatutHttp("400", "La requête est mal formée ou invalide"));
+ liste.add(new CodeStatutHttp("401", "L'authentification est requise pour accéder à la ressource"));
+ liste.add(new CodeStatutHttp("403", "Le client n'a pas les permissions nécessaires pour accéder à la ressource"));
+ liste.add(new CodeStatutHttp("404", "La ressource demandée n'existe pas"));
+ liste.add(new CodeStatutHttp("405", "La méthode HTTP utilisée n'est pas autorisée pour cette ressource"));
+ liste.add(new CodeStatutHttp("406", "La ressource n'est pas disponible dans un format acceptable pour le client"));
+ liste.add(new CodeStatutHttp("408", "Le serveur a expiré en attente de la requête"));
+ liste.add(new CodeStatutHttp("409", "Un conflit a été détecté"));
+ liste.add(new CodeStatutHttp("410", "La ressource n'est plus disponible et n'a pas d'adresse de redirection"));
+ liste.add(new CodeStatutHttp("411", "La requête doit spécifier la longueur de son contenu"));
+ liste.add(new CodeStatutHttp("412", "Une précondition dans les en-têtes de la requête a échoué"));
+ liste.add(new CodeStatutHttp("413", "La taille de la requête est trop grande"));
+ liste.add(new CodeStatutHttp("414", "L'URI fourni est trop long pour être traité"));
+ liste.add(new CodeStatutHttp("415", "Le format de la requête n'est pas supporté"));
+ liste.add(new CodeStatutHttp("422", "La requête est bien formée mais ne peut pas être traitée"));
+ liste.add(new CodeStatutHttp("429", "Trop de requêtes ont été envoyées dans un court laps de temps"));
+
+ /* 5xx - Erreurs du serveur */
+ liste.add(new CodeStatutHttp("500", "Une erreur inattendue s'est produite sur le serveur"));
+ liste.add(new CodeStatutHttp("501", "La méthode HTTP demandée n'est pas supportée par le serveur"));
+ liste.add(new CodeStatutHttp("502", "Une réponse invalide a été reçue d'un serveur en amont"));
+ liste.add(new CodeStatutHttp("503", "Le serveur est temporairement indisponible"));
+ liste.add(new CodeStatutHttp("504", "Le serveur en amont a mis trop de temps à répondre"));
+ liste.add(new CodeStatutHttp("505", "La version HTTP utilisée n'est pas supportée"));
+
+ /* On save en bd */
+ for (CodeStatutHttp codeStatutHttp : liste) {
+
+ /* On save */
+ codeStatutHttpManager.add(codeStatutHttp, null);
+
+ }
+
+ }
+
+ /* On ajoute dans la map */
+ for (CodeStatutHttp codeStatutHttp : liste) {
+
+ /* On ajoute à la map */
+ AppContext.registre_codes_http.put(codeStatutHttp.getCode(), codeStatutHttp.getLibelle());
+
+ }
+
+ }
+
+ private void addAdmins() {
+
+ List<User> users = userManager.findAll();
+
+ //Pas d'admin
+ if (!users.stream().filter(u -> u.getRole().getAdmin()).findAny().isPresent()) {
+ Role role = new Role();
+ role.setLibelle("Admin");
+ role.setDescription("Admin");
+ role.setAdmin(true);
+ Role newRole = roleManager.save(role);
+ addUser("adminc", "P@ssw0rd", newRole);
+ }
+
+ //pas de super admin
+ if (!users.stream().filter(u -> u.getRole().getSuperAdmin()).findAny().isPresent()) {
+ Role role = new Role();
+ role.setLibelle("Super Admin");
+ role.setDescription("Super Admin");
+ role.setSuperAdmin(true);
+ Role newRole = roleManager.save(role);
+ addUser("adminv", "P@ssw0rd", newRole);
+ }
+
+ //Pas de mega admin
+ if (!users.stream().filter(u -> u.getRole().getMegaAdmin()).findAny().isPresent()) {
+ Role role = new Role();
+ role.setLibelle("Hyper Admin");
+ role.setDescription("Hyper Admin");
+ role.setMegaAdmin(true);
+ Role newRole = roleManager.save(role);
+ addUser("admincontrol", "P@ssw0rd", newRole);
+ }
+
+ }
+
+ private void addUser(String userName, String password, Role role) {
+ User user = new User();
+ user.setUserName(userName);
+ user.setDelaiInactivite(10);
+ user.setPwd(CommonTools.encryptPassword(password));
+ user.setRole(role);
+ //user.getRoles().add(role);
+ userManager.save(user);
+ }
+
+ private void addNewActions() {
+
+ List<Class<?>> classes = CommonTools.getAnnotatedClasses("com.megatim.fdxconsultation.service", "com.mgt.rs.security.core.common.SecuredClass");
+
+ classes.forEach(clazz -> {
+
+ SecuredClass securedClass = clazz.getAnnotation(SecuredClass.class);
+ Method[] methods = clazz.getMethods();
+
+ for (Method method : methods) {
+
+ Secured secured = getInheritedAnnotation(Secured.class, method);
+ if (secured != null && secured.action() != null && !secured.action().isEmpty() && !secured.action().equals("*")) {
+ //On crée l'action ici
+ Action action = new Action();
+ action.setModule(securedClass.module());
+ action.setPath(securedClass.path());
+ action.setDescription(securedClass.description());
+ action.setName(secured.action());
+
+ RestrictionsContainer requeteur = RestrictionsContainer.newInstance();
+
+ //On ajoute les criteres
+ requeteur.addEq("name", action.getName());
+ requeteur.addEq("path", action.getPath());
+ requeteur.addEq("module", action.getModule());
+ requeteur.addEq("typeOperation", TypeOperation.AJOUTER);
+
+ List<Action> datas = actionManager.filter(requeteur.getPredicats(), null, null, 0, -1);
+ if (datas.isEmpty()) {
+ actionManager.save(action);
+ }
+
+ }
+ }
+
+ });
+
+ }
+
+ public static <A extends Annotation> A getInheritedAnnotation(Class<A> annotationClass, AnnotatedElement element) {
+ A annotation = element.getAnnotation(annotationClass);
+ if (annotation == null && element instanceof Method) {
+ annotation = getOverriddenAnnotation(annotationClass, (Method) element);
+ }
+ return annotation;
+ }
+
+ private static <A extends Annotation> A getOverriddenAnnotation(Class<A> annotationClass, Method method) {
+ final Class<?> methodClass = method.getDeclaringClass();
+ final String name = method.getName();
+ final Class<?>[] params = method.getParameterTypes();
+ // prioritize all superclasses over all interfaces
+ final Class<?> superclass = methodClass.getSuperclass();
+ if (superclass != null) {
+ final A annotation = getOverriddenAnnotationFrom(annotationClass, superclass, name, params);
+ if (annotation != null) {
+ return annotation;
+ }
+ }
+ // depth-first search over interface hierarchy
+ for (final Class<?> intf : methodClass.getInterfaces()) {
+ final A annotation = getOverriddenAnnotationFrom(annotationClass, intf, name, params);
+ if (annotation != null) {
+ return annotation;
+ }
+ }
+ return null;
+ }
+
+ private static <A extends Annotation> A getOverriddenAnnotationFrom(Class<A> annotationClass, Class<?> searchClass, String name, Class<?>[] params) {
+ try {
+ final Method method = searchClass.getMethod(name, params);
+ final A annotation = method.getAnnotation(annotationClass);
+ if (annotation != null) {
+ return annotation;
+ }
+ return getOverriddenAnnotation(annotationClass, method);
+ } catch (final NoSuchMethodException e) {
+ return null;
+ }
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordGlobalRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordGlobalRSImpl.java
new file mode 100644
index 0000000..8dd4f14
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordGlobalRSImpl.java
@@ -0,0 +1,164 @@
+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<TableauBordSlimDto> 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<TableauBordSlimDto> 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<ColumnDefinition> 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;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordRSImpl.java
new file mode 100644
index 0000000..b006ab1
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/impl/stats/TableauBordRSImpl.java
@@ -0,0 +1,181 @@
+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.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.administration.UserManager;
+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.administration.User;
+import com.megatim.fdxconsultation.model.dto.stats.StatResultDto;
+import com.megatim.fdxconsultation.model.dto.stats.TableauBordSlimDto;
+import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord;
+import com.megatim.fdxconsultation.model.mappers.MapStructMapper;
+import com.megatim.fdxconsultation.model.stats.TableauBord;
+import com.megatim.fdxconsultation.model.stats.dto.TableauBordRequest;
+import com.megatim.fdxconsultation.service.ifaces.stats.TableauBordRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredAdmin;
+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.enterprise.event.Observes;
+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", description = "Tableau de Bord")
+@Path("tableau-bord")
+//@SecuredAdmin(action = {"consulter", "éditer"})
+public class TableauBordRSImpl implements TableauBordRS {
+
+ @Inject
+ private UserManager userManager;
+
+ @AuthenticatedUser
+ private User utilisateurConnecte;
+
+ @Inject
+ RequestHandler requestHandler;
+
+ @Inject
+ private TableauBordManager manager;
+
+ @Inject
+ com.megatim.fdxcommons.model.mappers.MapStructMapper commonMapper;
+
+ @Inject
+ private MapStructMapper mapper;
+
+ @Inject
+ DataConsumptionOperations dataConsumptionOperations;
+
+ public TableauBordRSImpl() {
+ }
+
+ public void handleAuthenticationEvent(@Observes @AuthenticatedUser String username) {
+ utilisateurConnecte = userManager.recuperUtilisateur(username);
+ }
+
+ @Override
+ public TableauBordSlimDto mapToSlimDto(TableauBord entity) {
+ return mapper.tableauBordToTableauBordSlimDto(entity);
+ }
+
+ @Override
+ public Response save(HttpHeaders headers, TableauBordRequest tableauBordRequest) {
+ return Response.ok(mapToSlimDto(manager.save(utilisateurConnecte, 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<TableauBordSlimDto> dtos = requestHandler.findTableauBord(new CriteriaFormRequest(finalCriterion));
+
+ return Response.ok(dtos).build();
+ } catch (CommonApplicationValidationException ex) {
+ throw ex;
+ } catch (Exception ex) {
+ Logger.getLogger(TableauBordRSImpl.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<TableauBordSlimDto> dtos = requestHandler.findTableauBordWithPagination(new CriteriaFormRequest(finalCriterion), Arrays.asList(), pageNumber, pageSize);
+
+ return Response.ok(dtos).build();
+ } catch (Exception ex) {
+ Logger.getLogger(TableauBordRSImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+ throw new CommonApplicationServerException();
+ }
+ }
+
+ @Override
+ public Response getColumns(HttpHeaders headers, String referentielVersion, String codeTypeFichier) {
+ List<ColumnDefinition> colDefs = dataConsumptionOperations.getPrintableColumns(referentielVersion, codeTypeFichier);
+ return Response.ok(commonMapper.columnDefinitionListToColumnDefinitionDtoList(colDefs)).build();
+ }
+
+ @Override
+ public Response getDatas(HttpHeaders headers, String referentielVersion, String codeTypeFichier) {
+ StatResultDto results = manager.getDatas(utilisateurConnecte, referentielVersion, codeTypeFichier);
+ return Response.ok(results).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(TableauBordRSImpl.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) {
+ User user = userManager.recuperUtilisateur(userName);
+ manager.deleteUserTableauBord(user);
+
+ return Response.ok().build();
+ }
+
+ private CriteriaEntityFromView getCriteriaEntityAndAddTypeConfiguration(CriteriaFormRequest criteriaFormRequest) {
+
+ CriteriaEntityFromView finalCriterion = new CriteriaEntityFromView();
+ finalCriterion.setCriteriaLogicConnector(CriteriaLogicConnector.AND);
+
+ finalCriterion.getSubCriterias().add(new CriteriaEntityFromView("user.userName", utilisateurConnecte.getUserName(), Operateur.EQUALS));
+ finalCriterion.getSubCriterias().add(new CriteriaEntityFromView("typeConfiguration", TypeConfigurationTableauBord.USER_SPECIFIC, Operateur.EQUALS));
+
+ if (criteriaFormRequest != null && criteriaFormRequest.getCriteria() != null) {
+ finalCriterion.getSubCriterias().add(criteriaFormRequest.getCriteria());
+ }
+ return finalCriterion;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/JacksonMapperFormat.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/JacksonMapperFormat.java
new file mode 100644
index 0000000..1104420
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/JacksonMapperFormat.java
@@ -0,0 +1,26 @@
+package com.megatim.fdxconsultation.service.resolvers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+//import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.apache.camel.component.jackson.JacksonDataFormat;
+
+/**
+ *
+ * @author ASUS
+ */
+public class JacksonMapperFormat {
+
+ public static JacksonDataFormat jacksonDataFormat(Class<?> classe) {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.registerModule(new JavaTimeModule());
+ mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+
+ JacksonDataFormat jacksonDataFormat = new JacksonDataFormat();
+ jacksonDataFormat.setObjectMapper(mapper);
+ jacksonDataFormat.setUnmarshalType(classe);
+
+ return jacksonDataFormat;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/ObjectMapperContextResolver.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/ObjectMapperContextResolver.java
new file mode 100644
index 0000000..1fd1fc0
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/resolvers/ObjectMapperContextResolver.java
@@ -0,0 +1,33 @@
+package com.megatim.fdxconsultation.service.resolvers;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
+import javax.ws.rs.ext.ContextResolver;
+import javax.ws.rs.ext.Provider;
+
+/**
+ *
+ * @author Gabuntu
+ */
+@Provider
+public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
+
+ private final ObjectMapper mapper;
+
+ public ObjectMapperContextResolver() {
+ mapper = new ObjectMapper();
+ // Now you should use JavaTimeModule instead
+ mapper.registerModule(new JSR310Module());
+// mapper.activateDefaultTyping(
+// mapper.getPolymorphicTypeValidator(),
+// ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE
+// );
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
+ }
+
+ @Override
+ public ObjectMapper getContext(Class<?> type) {
+ return mapper;
+ }
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/supervision/SupervisionRSImpl.java b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/supervision/SupervisionRSImpl.java
new file mode 100644
index 0000000..520cf76
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/java/com/megatim/fdxconsultation/service/supervision/SupervisionRSImpl.java
@@ -0,0 +1,78 @@
+package com.megatim.fdxconsultation.service.supervision;
+
+import com.megatim.fdxconsultation.core.ifaces.administration.UserManager;
+import com.megatim.fdxconsultation.core.ifaces.supervision.StandaloneServerStateEntityManager;
+import com.megatim.fdxconsultation.core.ifaces.supervision.TransfertManager;
+import com.megatim.fdxconsultation.model.supervision.SupervisionData;
+import com.megatim.fdxconsultation.model.supervision.Transfert;
+import com.megatim.fdxconsultation.model.supervision.dto.StandaloneDashboardRequest;
+import com.megatim.fdxconsultation.model.supervision.dto.SupervisionFilterModalFormRequest;
+import com.megatim.fdxconsultation.service.ifaces.supervision.SupervisionRS;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import com.mgt.rs.security.core.common.SecuredClass;
+import java.util.List;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author Gabuntu
+ */
+//@RequestScoped
+@SecuredClass(module = AppCommonContext.MODULE_INFRASTRUCTURES, path = "Fdx serveur", description = "Fdx serveur")
+@Path("supervision")
+public class SupervisionRSImpl implements SupervisionRS {
+
+ @Inject
+ private UserManager userManager;
+
+ @Inject
+ private TransfertManager transfertManager;
+
+ @Inject
+ private StandaloneServerStateEntityManager standaloneServerStateEntityManager;
+
+ public SupervisionRSImpl() {
+ super();
+ }
+
+ @Override
+ public Response supervisionData(HttpHeaders headers, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+ return Response
+ .ok(supervisionData(supervisionFilterModalFormRequest))
+ .build();
+ }
+
+ @Override
+ public Response standaloneState(HttpHeaders headers) {
+ return Response.ok(standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity()).build();
+ }
+
+ @Override
+ public Response dashboard(HttpHeaders headers, StandaloneDashboardRequest standaloneDashboardRequest) {
+ return Response
+ .ok(transfertManager.standaloneDashboardResponse(standaloneDashboardRequest))
+ .build();
+ }
+
+ @Override
+ public Response filterTransferts(HttpHeaders headers, SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+ return Response.ok(transfertManager.filter(supervisionFilterModalFormRequest)).build();
+ }
+
+ private SupervisionData supervisionData(SupervisionFilterModalFormRequest supervisionFilterModalFormRequest) {
+
+ //List<Transfert> transferts = transfertManager.findAll();
+ List<Transfert> transferts = transfertManager.filter(supervisionFilterModalFormRequest);
+ transferts.sort((t1, t2) -> Long.compare(t2.getId(), t1.getId()));
+
+ SupervisionData supervisionData = new SupervisionData();
+ supervisionData.setTransferts(transfertManager.filter(supervisionFilterModalFormRequest));
+ supervisionData.setStandaloneServerState(standaloneServerStateEntityManager.getCurrentStandaloneServerStateEntity());
+
+ return supervisionData;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/resources/application.properties b/fdx-consultation/fdxconsultation-service-impl/src/main/resources/application.properties
new file mode 100644
index 0000000..dabd265
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/resources/application.properties
@@ -0,0 +1,10 @@
+authentication.jwt.secret = secret
+authentication.jwt.issuer = http://example.org
+authentication.jwt.audience = http://example.org
+authentication.jwt.clockSkew = 10
+authentication.jwt.validFor = 600000
+authentication.jwt.validForRefresh = 900000
+authentication.jwt.refreshLimit = 1
+authentication.jwt.claimNames.authorities = authorities
+authentication.jwt.claimNames.refreshCount = refreshCount
+authentication.jwt.claimNames.refreshLimit = refreshLimit
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/resources/natureProductionFichiers.xml b/fdx-consultation/fdxconsultation-service-impl/src/main/resources/natureProductionFichiers.xml
new file mode 100644
index 0000000..2d6f986
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/resources/natureProductionFichiers.xml
@@ -0,0 +1,168 @@
+<NatureProductionFichiersToExport>
+ <natureProductionFichierList>
+ <typeFichier>
+ <code>DGICON</code>
+ <libelle>FICHIER DU CONTRIBUABLE ACTIF</libelle>
+ <description>FICHIER DU CONTRIBUABLE ACTIF</description>
+ <participant>
+ <code>DGI</code>
+ <libelle>DIRECTION GENERALE DES IMPOTS</libelle>
+ <description>DIRECTION GENERALE DES IMPOTS</description>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <pays>
+ <code>CM</code>
+ <libelle>CAMEROUN</libelle>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <dateCreation>18/09/2024 15:37:15</dateCreation>
+ <dateMiseAjour>18/09/2024 15:37:15</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </pays>
+ <dateCreation>18/09/2024 15:37:47</dateCreation>
+ <dateMiseAjour>18/09/2024 15:37:47</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </participant>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <categorieFichier>STRUCTURE</categorieFichier>
+ <extensionFichier>
+ <extension>txt</extension>
+ <libelle>Fichier texte</libelle>
+ <typeExtension>TEXTE</typeExtension>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <dateCreation>18/09/2024 15:48:51</dateCreation>
+ <dateMiseAjour>18/09/2024 15:48:51</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </extensionFichier>
+ <dateCreation>18/09/2024 15:49:48</dateCreation>
+ <dateMiseAjour>18/09/2024 15:49:48</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </typeFichier>
+ <referentiel>
+ <version>000034</version>
+ <description>REF000034</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-10-01T09:32:06.177</dateMiseAjour>
+ <dateGeneration>2024-09-30T17:46:22.75</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <natureProduction>CUMMULATIVE</natureProduction>
+ <dateCreation>30/09/2024 14:10:31</dateCreation>
+ <dateMiseAjour>30/09/2024 14:10:31</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </natureProductionFichierList>
+ <natureProductionFichierList>
+ <typeFichier>
+ <code>DGICON</code>
+ <libelle>FICHIER DU CONTRIBUABLE ACTIF</libelle>
+ <description>FICHIER DU CONTRIBUABLE ACTIF</description>
+ <participant>
+ <code>DGI</code>
+ <libelle>DIRECTION GENERALE DES IMPOTS</libelle>
+ <description>DIRECTION GENERALE DES IMPOTS</description>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <pays>
+ <code>CM</code>
+ <libelle>CAMEROUN</libelle>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <dateCreation>18/09/2024 15:37:15</dateCreation>
+ <dateMiseAjour>18/09/2024 15:37:15</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </pays>
+ <dateCreation>18/09/2024 15:37:47</dateCreation>
+ <dateMiseAjour>18/09/2024 15:37:47</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </participant>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <categorieFichier>STRUCTURE</categorieFichier>
+ <extensionFichier>
+ <extension>txt</extension>
+ <libelle>Fichier texte</libelle>
+ <typeExtension>TEXTE</typeExtension>
+ <referentiel>
+ <version>000001</version>
+ <description>REFERENTIEL DE DEMARRAGE</description>
+ <statutReferentiel>ARCHIVE</statutReferentiel>
+ <dateMiseAjour>2024-09-18T16:19:01.323</dateMiseAjour>
+ <dateGeneration>2024-09-18T16:13:42.673</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <dateCreation>18/09/2024 15:48:51</dateCreation>
+ <dateMiseAjour>18/09/2024 15:48:51</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </extensionFichier>
+ <dateCreation>18/09/2024 15:49:48</dateCreation>
+ <dateMiseAjour>18/09/2024 15:49:48</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </typeFichier>
+ <referentiel>
+ <version>000035</version>
+ <description>REF0000035</description>
+ <statutReferentiel>EN_COURS</statutReferentiel>
+ <dateMiseAjour>2024-10-01T09:32:06.177</dateMiseAjour>
+ <dateGeneration>2024-10-01T09:32:06.127</dateGeneration>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </referentiel>
+ <natureProduction>CUMMULATIVE</natureProduction>
+ <dateCreation>30/09/2024 17:48:04</dateCreation>
+ <dateMiseAjour>01/10/2024 09:31:58</dateMiseAjour>
+ <createBy>AdminMinfi</createBy>
+ <lastModifiedBy>AdminMinfi</lastModifiedBy>
+ </natureProductionFichierList>
+</NatureProductionFichiersToExport>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/beans.xml b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/beans.xml
new file mode 100644
index 0000000..f8e2542
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/beans.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
+ bean-discovery-mode="all">
+</beans>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/web.xml b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..4ee0b6f
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
+ <session-config>
+ <session-timeout>
+ 30
+ </session-timeout>
+ </session-config>
+ <filter>
+ <filter-name>CorsFilter</filter-name>
+ <filter-class>com.megatim.fdxconsultation.service.impl.filters.CORSFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>CorsFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+</web-app>
diff --git a/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/index.html b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/index.html
new file mode 100644
index 0000000..f67377e
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-service-impl/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>API GAD </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ </head>
+ <body>
+ <h1>API GAD PROJECT </h1>
+ </body>
+</html>
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/pom.xml b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/pom.xml
new file mode 100644
index 0000000..cdd67fc
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation-tools-module</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>fdxconsultation-tools-entities</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+ <name>fdxconsultation-tools-entities</name>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.model</groupId>
+ <artifactId>fdxconsultation-model</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxconsultation.reporting</groupId>
+ <artifactId>fdxconsultation-reporting</artifactId>
+ <version>1.0</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/CommonsToolsEntity.java b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/CommonsToolsEntity.java
new file mode 100644
index 0000000..d6f20dd
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/CommonsToolsEntity.java
@@ -0,0 +1,430 @@
+package com.megatim.fdxconsultation.tools;
+
+import com.megatim.fdxcommons.model.referentiel.*;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalActionUtilisateurReporting;
+import com.megatim.fdxconsultation.reporting.model.administration.RoleReporting;
+import com.megatim.fdxconsultation.reporting.model.administration.JournalConnexionUtilisateurReporting;
+import com.megatim.fdxconsultation.reporting.model.administration.UserReporting;
+import com.megatim.fdxcommons.tools.CommonsTools;
+import com.megatim.fdxcommons.tools.context.AppContext;
+import com.megatim.fdxconsultation.model.administration.*;
+import com.megatim.fdxconsultation.model.api.token.ApiToken;
+import com.megatim.fdxconsultation.reporting.model.api.token.ApiTokenReporting;
+import com.megatim.fdxconsultation.model.configuration.CodeStatutHttp;
+import com.megatim.fdxconsultation.model.log.ApiUserActionLog;
+import com.megatim.fdxconsultation.reporting.model.configuration.CodeStatutHttpReporting;
+import com.megatim.fdxconsultation.reporting.model.log.ApiUserActionLogReporting;
+import com.megatim.fdxconsultation.reporting.model.referentiel.ExtensionFichierReporting;
+import com.megatim.fdxconsultation.reporting.model.referentiel.*;
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author ABEGA
+ */
+public class CommonsToolsEntity {
+
+ /**
+ * Methode permettant de convertir une liste de roles en liste de RoleReporting
+ * @param objets
+ * @return
+ */
+ public static List<RoleReporting> convertToRoleReporting(List<Role> objets){
+ List<RoleReporting> liste = new ArrayList<>();
+ RoleReporting reporting = null;
+ if(objets != null){
+ for(Role obj : objets){
+ reporting = new RoleReporting();
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setDescription(obj.getDescription());
+ reporting.setNbreUtilisateur(obj.getNbreUtilisateur());
+ reporting.setEtatOperation(obj.getEtatOperation() != null ? obj.getEtatOperation().toString() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getUtilisateurCreation());
+ reporting.setDateDerniereModification(obj.getDateDerniereModification() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateDerniereModification()) : null);
+ reporting.setUtilisateurModification(obj.getUtilisateurModification());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de UserReporting
+ * @param objets
+ * @return
+ */
+ public static List<UserReporting> convertToUserReporting(List<User> objets){
+ List<UserReporting> liste = new ArrayList<>();
+ UserReporting reporting = null;
+ if(objets != null){
+ for(User obj : objets){
+ reporting = new UserReporting();
+ reporting.setLastName(obj.getLastName());
+ reporting.setFirstName(obj.getFirstName());
+ reporting.setUserName(obj.getUserName());
+ reporting.setRole(obj.getRole() != null ? obj.getRole().getLibelle() : null);
+ reporting.setEtatOperation(obj.getEtatOperation() != null ? obj.getEtatOperation().name() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getUtilisateurCreation());
+ reporting.setDateDerniereModification(obj.getDateDerniereModification() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateDerniereModification()) : null);
+ reporting.setUtilisateurModification(obj.getUtilisateurModification());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de CodeStatutHttpReporting
+ * @param objets
+ * @return
+ */
+ public static List<CodeStatutHttpReporting> convertToCodeStatutHttpReporting(List<CodeStatutHttp> objets){
+ List<CodeStatutHttpReporting> liste = new ArrayList<>();
+ CodeStatutHttpReporting reporting = null;
+ if(objets != null){
+ for(CodeStatutHttp obj : objets){
+ reporting = new CodeStatutHttpReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getUtilisateurCreation());
+ reporting.setDateDerniereModification(obj.getDateDerniereModification() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateDerniereModification()) : null);
+ reporting.setUtilisateurModification(obj.getUtilisateurModification());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de ApiTokenReporting
+ * @param objets
+ * @return
+ */
+ public static List<ApiTokenReporting> convertToApiTokenReporting(List<ApiToken> objets){
+ List<ApiTokenReporting> liste = new ArrayList<>();
+ ApiTokenReporting reporting = null;
+ if(objets != null){
+ for(ApiToken obj : objets){
+ reporting = new ApiTokenReporting();
+ reporting.setParticipant(obj.getParticipant().getCode());
+ reporting.setApiTokenStatut(obj.getApiTokenStatut().getValue());
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getUtilisateurCreation());
+ reporting.setDateDerniereModification(obj.getDateDerniereModification() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateDerniereModification()) : null);
+ reporting.setUtilisateurModification(obj.getUtilisateurModification());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de journalActionUtilisateur en liste de JournalActionUtilisateurReporting
+ * @param objets
+ * @return
+ */
+ public static List<JournalActionUtilisateurReporting> convertToJournalActionUtilisateurReporting(List<JournalActionUtilisateur> objets){
+ List<JournalActionUtilisateurReporting> liste = new ArrayList<>();
+ JournalActionUtilisateurReporting reporting = null;
+ if(objets != null){
+ for(JournalActionUtilisateur obj : objets){
+ reporting = new JournalActionUtilisateurReporting();
+ reporting.setDateAction(obj.getDateAction() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateAction()) : null);
+ reporting.setHttpMethod(obj.getHttpMethod());
+ reporting.setIpAddress(obj.getIpAddress());
+ reporting.setMessage(obj.getMessage());
+ reporting.setRelativePath(obj.getRelativePath());
+ reporting.setStatus(obj.getStatus());
+ reporting.setUserAgent(obj.getUserAgent());
+ reporting.setUserName(obj.getUserName());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de journalActionUtilisateur en liste de ApiUserActionLogReporting
+ * @param objets
+ * @return
+ */
+ public static List<ApiUserActionLogReporting> convertToApiUserActionLogReporting(List<ApiUserActionLog> objets){
+ List<ApiUserActionLogReporting> liste = new ArrayList<>();
+ ApiUserActionLogReporting reporting = null;
+ if(objets != null){
+ for(ApiUserActionLog obj : objets){
+ reporting = new ApiUserActionLogReporting();
+ reporting.setDateAction(obj.getDateAction() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateAction()) : null);
+ reporting.setHttpMethod(obj.getHttpMethod());
+ reporting.setIpAddress(obj.getIpAddress());
+ reporting.setMessage(obj.getMessage());
+ reporting.setRelativePath(obj.getRelativePath());
+ reporting.setStatus(obj.getStatus());
+ reporting.setUserAgent(obj.getUserAgent());
+ reporting.setUserName(obj.getUserName());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de journalConnexionUtilisateur en liste de JournalConnexionUtilisateurReporting
+ * @param objets
+ * @return
+ */
+ public static List<JournalConnexionUtilisateurReporting> convertToJournalConnexionUtilisateurReporting(List<JournalConnexionUtilisateur> objets){
+ List<JournalConnexionUtilisateurReporting> liste = new ArrayList<>();
+ JournalConnexionUtilisateurReporting reporting = null;
+ if(objets != null){
+ for(JournalConnexionUtilisateur obj : objets){
+ reporting = new JournalConnexionUtilisateurReporting();
+ reporting.setDateAction(obj.getDateAction() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateAction()) : null);
+ reporting.setHttpMethod(obj.getHttpMethod());
+ reporting.setIpAddress(obj.getIpAddress());
+ reporting.setMessage(obj.getMessage());
+ reporting.setRelativePath(obj.getRelativePath());
+ reporting.setStatus(obj.getStatus());
+ reporting.setUserAgent(obj.getUserAgent());
+ reporting.setUserName(obj.getUserName());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de PaysReporting
+ * @param objets
+ * @return
+ */
+ public static List<PaysReporting> convertToPaysReporting(List<Pays> objets){
+ List<PaysReporting> liste = new ArrayList<>();
+ PaysReporting reporting = null;
+ if(objets != null){
+ for(Pays obj : objets){
+ reporting = new PaysReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de ExtensionFichierReporting
+ * @param objets
+ * @return
+ */
+ public static List<ExtensionFichierReporting> convertToExtensionFichierReporting(List<ExtensionFichier> objets){
+ List<ExtensionFichierReporting> liste = new ArrayList<>();
+ ExtensionFichierReporting reporting = null;
+ if(objets != null){
+ for(ExtensionFichier obj : objets){
+ reporting = new ExtensionFichierReporting();
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setTypeExtension(obj.getTypeExtension().getValue());
+ reporting.setExtension(obj.getExtension());
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de GroupeNoeudReporting
+ * @param objets
+ * @return
+ */
+ public static List<GroupeNoeudReporting> convertToGroupeNoeudReporting(List<GroupeNoeud> objets){
+ List<GroupeNoeudReporting> liste = new ArrayList<>();
+ GroupeNoeudReporting reporting = null;
+ if(objets != null){
+ for(GroupeNoeud obj : objets){
+ reporting = new GroupeNoeudReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de GroupeParticipantReporting
+ * @param objets
+ * @return
+ */
+ public static List<GroupeParticipantReporting> convertToGroupeParticipantReporting(List<GroupeParticipant> objets){
+ List<GroupeParticipantReporting> liste = new ArrayList<>();
+ GroupeParticipantReporting reporting = null;
+ if(objets != null){
+ for(GroupeParticipant obj : objets){
+ reporting = new GroupeParticipantReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de NoeudReporting
+ * @param objets
+ * @return
+ */
+ public static List<NoeudReporting> convertToNoeudReporting(List<Noeud> objets){
+ List<NoeudReporting> liste = new ArrayList<>();
+ NoeudReporting reporting = null;
+ if(objets != null){
+ for(Noeud obj : objets){
+ reporting = new NoeudReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setParticipant(obj.getParticipant() != null ? obj.getParticipant().getCode(): null);
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de ParticipantReporting
+ * @param objets
+ * @return
+ */
+ public static List<ParticipantReporting> convertToParticipantReporting(List<Participant> objets){
+ List<ParticipantReporting> liste = new ArrayList<>();
+ ParticipantReporting reporting = null;
+ if(objets != null){
+ for(Participant obj : objets){
+ reporting = new ParticipantReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setPays(obj.getPays() != null ? obj.getPays().getCode() : null);
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de ReferentielReporting
+ * @param objets
+ * @return
+ */
+ public static List<ReferentielReporting> convertToReferentielReporting(List<Referentiel> objets){
+ List<ReferentielReporting> liste = new ArrayList<>();
+ ReferentielReporting reporting = null;
+ if(objets != null){
+ for(Referentiel obj : objets){
+ reporting = new ReferentielReporting();
+ reporting.setVersion(obj.getVersion());
+ reporting.setDescription(obj.getDescription());
+ reporting.setStatutReferentiel(obj.getStatutReferentiel() != null ? obj.getStatutReferentiel().getValue(): null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de RoutageReporting
+ * @param objets
+ * @return
+ */
+ public static List<RoutageReporting> convertToRoutageReporting(List<Routage> objets){
+ List<RoutageReporting> liste = new ArrayList<>();
+ RoutageReporting reporting = null;
+ if(objets != null){
+ for(Routage obj : objets){
+ reporting = new RoutageReporting();
+ reporting.setCode(obj.getTypeFichier() != null ? obj.getTypeFichier().getCode(): null);
+ reporting.setCategorie(obj.getTypeFichier() != null ? obj.getTypeFichier().getCategorieFichier().toString() : null);
+ reporting.setExtension(obj.getTypeFichier() != null ? obj.getTypeFichier().getExtensionFichier().toString() : null);
+ reporting.setLibelle(obj.getTypeFichier() != null ? obj.getTypeFichier().getLibelle() : null);
+ reporting.setParticipant(obj.getTypeFichier() != null ? obj.getTypeFichier().getParticipant().getCode() : null);
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+ /**
+ * Methode permettant de convertir une liste de user en liste de TypeFichierReporting
+ * @param objets
+ * @return
+ */
+ public static List<TypeFichierReporting> convertToTypeFichierReporting(List<TypeFichier> objets){
+ List<TypeFichierReporting> liste = new ArrayList<>();
+ TypeFichierReporting reporting = null;
+ if(objets != null){
+ for(TypeFichier obj : objets){
+ reporting = new TypeFichierReporting();
+ reporting.setCode(obj.getCode());
+ reporting.setLibelle(obj.getLibelle());
+ reporting.setCategorie(obj.getCategorieFichier() != null ? obj.getCategorieFichier().toString() : null);
+ reporting.setExtension(obj.getExtensionFichier()!= null ? obj.getExtensionFichier().toString() : null);
+ reporting.setParticipant(obj.getParticipant() != null ? obj.getParticipant().toString() : null);
+ reporting.setReferentiel(obj.getReferentiel() != null ? obj.getReferentiel().getVersion() : null);
+ reporting.setDateCreation(obj.getDateCreation() != null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateCreation()) : null);
+ reporting.setUtilisateurCreation(obj.getCreateBy());
+ reporting.setDateDerniereModification(obj.getDateMiseAjour()!= null ? CommonsTools.formaterDate(AppContext.FORMAT_DATE_HEURE_CLASSIQUE, obj.getDateMiseAjour()) : null);
+ reporting.setUtilisateurModification(obj.getLastModifiedBy());
+ liste.add(reporting);
+ }
+ }
+ return liste;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/context/AppContextEntity.java b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/context/AppContextEntity.java
new file mode 100644
index 0000000..ee4854d
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools-entities/src/main/java/com/megatim/fdxconsultation/tools/context/AppContextEntity.java
@@ -0,0 +1,16 @@
+/*
+ * 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.tools.context;
+
+import java.io.File;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AppContextEntity {
+
+
+}
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/pom.xml b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/pom.xml
new file mode 100644
index 0000000..12d18b7
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/pom.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation-tools-module</artifactId>
+ <version>1.0</version>
+ </parent>
+
+ <groupId>com.megatim.fdxconsultation.tools</groupId>
+ <artifactId>fdxconsultation-tools</artifactId>
+ <packaging>jar</packaging>
+ <name>fdxconsultation-tools</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>8.0</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.github.classgraph</groupId>
+ <artifactId>classgraph</artifactId>
+ <version>4.8.90</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-scratchpad</artifactId>
+ <version>3.17</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>net.sf.jasperreports</groupId>
+ <artifactId>jasperreports</artifactId>
+ <version>6.19.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.jasperreports</groupId>
+ <artifactId>jasperreports-fonts</artifactId>
+ <version>6.19.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.opencsv</groupId>
+ <artifactId>opencsv</artifactId>
+ <version>4.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>export-excel</artifactId>
+ <version>1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.xmlbeans</groupId>
+ <artifactId>xmlbeans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/CommonTools.java b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/CommonTools.java
new file mode 100644
index 0000000..a5a0eba
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/CommonTools.java
@@ -0,0 +1,404 @@
+package com.megatim.fdxconsultation.tools;
+
+import com.megatim.export.excel.Export;
+import io.github.classgraph.ClassGraph;
+import io.github.classgraph.ClassInfoList;
+import io.github.classgraph.ScanResult;
+import java.io.File;
+import java.io.FileInputStream;
+import java.math.BigInteger;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.security.spec.InvalidKeySpecException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.PBEKeySpec;
+import java.lang.annotation.Annotation;
+import com.megatim.fdxconsultation.tools.context.AppCommonContext;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+/**
+ *
+ * @author ABEGA
+ */
+public class CommonTools {
+
+ /**
+ * Permet de generer des nomre aleatorement
+ *
+ * @return
+ */
+ public static synchronized String genererChaineAleatoire() {
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+ String nombre = format.format(new Date()) + String.valueOf((int) (Math.random() * 1000000000));
+ return nombre;
+ }
+
+ /**
+ * Permet d'exporter en excel dans repertoire donn�
+ *
+ * @param datas
+ * @param repertoireGeneration
+ * @return
+ */
+ public static File exporterEnExcel(List datas, File fichier) {
+
+ try {
+
+ //On effectue l'export
+ Export.exportExcel(datas, fichier.getAbsolutePath());
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return fichier;
+ }
+
+ /**
+ * Methode permettant de
+ * @param headers
+ * @param request
+ * @return
+ */
+ public static Map<String, String> recupererInfosRequete(HttpHeaders headers, @Context HttpServletRequest request) {
+
+ //Variables
+ Map<String, String> map = new HashMap<String, String>();
+
+ // Adresse IP du client
+ String clientIp = request.getRemoteAddr();
+
+ // En-tête User-Agent
+ String userAgent = headers.getHeaderString("User-Agent");
+
+ // Methode
+ String methode = request.getMethod();
+
+ // Path
+ String path = request.getRequestURI();
+
+ //On ajoute les informations dans la map
+ map.put(AppCommonContext.REQUETE_HTTP_ADRESSE_IP, clientIp);
+ map.put(AppCommonContext.REQUETE_HTTP_CLIENT, userAgent);
+ map.put(AppCommonContext.REQUETE_HTTP_METHODE, methode);
+ map.put(AppCommonContext.REQUETE_HTTP_PATH, path.toLowerCase().replaceAll(AppCommonContext.PATH_BASE_MODULE_CONSULTATION.toLowerCase(), ""));
+
+ //On retourne la map
+ return map;
+
+ }
+
+ /**
+ * Permet d'ajouter des jours à une date donnée
+ * @param date
+ * @param nbreJour
+ * @return
+ */
+ public static Date addDay(Date date, int nbreJour){
+
+ //Varaibles
+ Calendar cal = Calendar.getInstance();
+
+ //On ajoute la date
+ cal.setTime(date);
+
+ //On ajoute la date
+ cal.add(Calendar.DATE, nbreJour);
+
+ // convert calendar to date
+ Date modifiedDate = cal.getTime();
+
+ return modifiedDate;
+ }
+
+ /**
+ * Permet de formater les chiffres avec un zero devant
+ * @return
+ */
+ public static String formaterChiffreAvecZeroDevant(long chiffre) {
+
+ //Si nombre
+ if(chiffre >= 10){
+ return String.valueOf(chiffre);
+ }else{
+ return "0"+String.valueOf(chiffre);
+ }
+
+ }
+
+ /**
+ * Renvoie les champs de la liste qui n'appartiennent pas à l'entité
+ *
+ * @param classe
+ * @param fieldsToCheck
+ * @return
+ */
+ public static List<String> checkIfEntityField(Class<?> classe, List<String> fieldsToCheck) {
+ List<String> fieldsNotFound = new ArrayList<>();
+ Set<String> fieldsSet = Arrays.asList(classe.getDeclaredFields()).stream().map(f ->f.getName()).collect(Collectors.toSet());
+
+ fieldsToCheck.stream().forEach(s -> {
+ System.out.println("field to check "+s);
+ if (!fieldsSet.contains(s)) {
+ fieldsNotFound.add(s);
+ }
+ });
+ return fieldsNotFound;
+ }
+
+ /**
+ * Permet de hacher le mot de passe
+ *
+ * @param password
+ * @return
+ */
+ public static String encryptPassword(String password) {
+
+ try {
+
+ int iterations = 1000;
+ char[] chars = password.toCharArray();
+ byte[] salt = getSalt();
+
+ PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 64 * 8);
+ SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+
+ byte[] hash = skf.generateSecret(spec).getEncoded();
+ return iterations + ":" + toHex(salt) + ":" + toHex(hash);
+
+ } catch (Exception ex) {
+
+ //On affiche le message d'errreur
+ ex.printStackTrace();
+
+ }
+
+ return null;
+ }
+
+ /**
+ * Permet de charger des classes qui ont une annotation pr�cise
+ *
+ * @param pkgName
+ * @param annotation
+ * @return
+ */
+ public static List<Annotation> getAnnotations(final String pkgName, String annotation) {
+
+ //Variables
+ List<Class<?>> classRefs = new ArrayList<>();
+
+ List<Annotation> annotations = new ArrayList<>();
+
+ try ( ScanResult scanResult = new ClassGraph().acceptPackages(pkgName).enableAllInfo().scan()) {
+
+ //On recup�re les classes annot�es
+ ClassInfoList liste = scanResult.getClassesWithAnnotation(annotation);
+
+ //On charge les classes
+ classRefs = liste.loadClasses();
+
+ //On parcourt les classes
+ for (Class<?> classe : classRefs) {
+
+ //On parcourt les annotations
+ for (Annotation annotationDeclaree : classe.getDeclaredAnnotations()) {
+
+ //On ajoute l'annotation
+ annotations.add(annotationDeclaree);
+
+ }
+
+ }
+
+ } catch (Exception e) {
+
+ //On affiche les traces
+ e.printStackTrace();
+
+ }
+
+ return annotations;
+ }
+
+ /**
+ * Permet de charger des classes qui ont une annotation pr�cise
+ *
+ * @param pkgName
+ * @param annotation
+ * @return
+ */
+ public static List<Class<?>> getAnnotatedClasses(final String pkgName, String annotation) {
+
+ //Variables
+ List<Class<?>> classRefs = new ArrayList<>();
+
+ try ( ScanResult scanResult = new ClassGraph().acceptPackages(pkgName).enableAllInfo().scan()) {
+
+ //On recup�re les classes annot�es
+ ClassInfoList liste = scanResult.getClassesWithAnnotation(annotation);
+
+ //On charge les classes
+ classRefs = liste.loadClasses();
+
+ } catch (Exception e) {
+
+ //On affiche les traces
+ e.printStackTrace();
+
+ }
+
+ return classRefs;
+ }
+
+ /**
+ * Permet de valider le mot de passe
+ *
+ * @param originalPassword
+ * @param storedPassword
+ * @return
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidKeySpecException
+ */
+ public static boolean validerMotDePasse(String originalPassword, String storedPassword)
+ throws NoSuchAlgorithmException, InvalidKeySpecException {
+ String[] parts = storedPassword.split(":");
+ int iterations = Integer.parseInt(parts[0]);
+
+ byte[] salt = fromHex(parts[1]);
+ byte[] hash = fromHex(parts[2]);
+
+ PBEKeySpec spec = new PBEKeySpec(originalPassword.toCharArray(),
+ salt, iterations, hash.length * 8);
+ SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
+ byte[] testHash = skf.generateSecret(spec).getEncoded();
+
+ int diff = hash.length ^ testHash.length;
+ for (int i = 0; i < hash.length && i < testHash.length; i++) {
+ diff |= hash[i] ^ testHash[i];
+ }
+ return diff == 0;
+ }
+
+ /**
+ * Retourne le chemin du serveur
+ *
+ * @return
+ */
+ public static String getCurrentDirectoryOfServer() {
+
+ //On recup�re le chemin du repertoire
+ AppCommonContext.REPERTOIRE_SERVEUR = getCurrentDirectory().getParent() + File.separator + "standalone" + File.separator + "data" + File.separator + "donnees";
+
+ return AppCommonContext.REPERTOIRE_SERVEUR;
+ }
+
+ /**
+ * Retourne le chemin du serveur
+ *
+ * @return
+ */
+ public static String getCurrentTempDirectoryOfServer() {
+
+ //On recup�re le chemin du repertoire
+ AppCommonContext.REPERTOIRE_SERVEUR = getCurrentDirectory().getParent() + File.separator + "standalone" + File.separator + "tmp";
+
+ return AppCommonContext.REPERTOIRE_SERVEUR;
+ }
+
+ /**
+ * Retourn le chemin courant
+ *
+ * @return
+ */
+ public static File getCurrentDirectory() {
+ String fileName = (String) System.getProperties().get("user.dir");
+ return new File(fileName);
+ }
+
+ public static Properties loadProperties(String filename) {
+ Properties properties = new Properties();
+
+ try {
+
+ //On charge le fichier de config
+ properties.load(new FileInputStream(filename));
+
+ } catch (Exception ex) {
+
+ //On affiche l'erreur
+ ex.printStackTrace();
+
+ }
+
+ return properties;
+ }
+
+ /**
+ * Permet de convertir un hexadeicmal en tableau de byte
+ *
+ * @param hex
+ * @return
+ * @throws NoSuchAlgorithmException
+ */
+ public static byte[] fromHex(String hex) throws NoSuchAlgorithmException {
+ byte[] bytes = new byte[hex.length() / 2];
+ for (int i = 0; i < bytes.length; i++) {
+ bytes[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);
+ }
+ return bytes;
+ }
+
+ /**
+ *
+ * @param array
+ * @return
+ * @throws NoSuchAlgorithmException
+ */
+ public static String toHex(byte[] array) throws NoSuchAlgorithmException {
+ BigInteger bi = new BigInteger(1, array);
+ String hex = bi.toString(16);
+
+ int paddingLength = (array.length * 2) - hex.length();
+ if (paddingLength > 0) {
+ return String.format("%0" + paddingLength + "d", 0) + hex;
+ } else {
+ return hex;
+ }
+ }
+
+ /**
+ *
+ * @return @throws NoSuchAlgorithmException
+ */
+ public static byte[] getSalt() throws NoSuchAlgorithmException {
+ SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
+ byte[] salt = new byte[16];
+ sr.nextBytes(salt);
+ return salt;
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/context/AppCommonContext.java b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/context/AppCommonContext.java
new file mode 100644
index 0000000..0b737e9
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/fdxconsultation-tools/src/main/java/com/megatim/fdxconsultation/tools/context/AppCommonContext.java
@@ -0,0 +1,69 @@
+package com.megatim.fdxconsultation.tools.context;
+
+import java.io.File;
+
+/**
+ *
+ * @author ASUS
+ */
+public class AppCommonContext {
+
+ public static final String DATA_INTEGRATION_TIMER = "consultation-data-integration-timer";
+ public static final String PATH_API_TOKEN = "Gestion des tokens";
+ public static final String MODULE_ADMINISTRATION = "Paramètres généraux";
+ public static final String MODULE_DOCUMENTATION = "Infos et docs";
+ public static final String MODULE_MESSAGERIE = "Messagerie";
+ public static final String MODULE_INFRASTRUCTURES = "Infrastructures";
+ public static final String MODULE_CONSULTATION_WEB = "Consultation web";
+
+ public static final String REQUETE_HTTP_ADRESSE_IP = "adresseip";
+ public static final String REQUETE_HTTP_CLIENT = "useragent";
+ public static final String REQUETE_HTTP_METHODE = "methode";
+ public static final String REQUETE_HTTP_STATUT = "statut";
+ public static final String REQUETE_HTTP_PATH = "path";
+
+ public static final String JNDI_NAME = "java:/fdxConsultationDS";
+ public static final String PERSISTENCE_UNIT_NAME = "fdxConsultationPersistenceUnit";
+
+ public static final String PATH_BASE_MODULE_CONSULTATION = "/fdxconsultation-service-impl-1.0/fdx-consultation";
+ public static final String CONFIG_FILE = "";
+ public static final String REPERTOIRE_CONF = "";
+ public static String REPERTOIRE_SERVEUR = "";
+ public static String CLE_DONNEES_VALIDES = "";
+ public static String CLE_DONNEES_INVALIDES = "";
+
+ public static final String TOKEN_GENERATION_DIRECT = "token-authentification-direct";
+ public static final String REMOTE_CONGIGURATION_DIRECT = "remote-configuration-direct";
+
+ public static final String WEB_USER_ACTION_DIRECT = "webUserActionDirect";
+ public static final String WEB_USER_ACTION_EXCHANGE = "webUserActionExchange";
+ public static final String WEB_USER_ACTION_QUEUE = "webUserActionQueue";
+ public static final String WEB_USER_ACTION_ROUTING_KEY = "webUserActionRoutingKey";
+
+ public static final String SERVER_DIR = getCurrentDirectory().getParent();
+ public static final String APP_DIR = SERVER_DIR + File.separator + "standalone" + File.separator + "fdxconsultation";
+ public static final String JASPER_DIR = APP_DIR + File.separator + "jasper";
+ public static final String PDF_DIR = APP_DIR + File.separator + "pdfs";
+ public static final String EXPORT_DIR = APP_DIR + File.separator + "exports";
+ public static final String IMAGES_DIR = APP_DIR + File.separator + "images";
+ public static final String TEMPLATE_DIR = APP_DIR + File.separator + "templates";
+ public static final String TEMPLATE_LISTE = "templateEtatsListe.xml";
+ public static final String TEMPLATE_DETAIL = "templateEtatsDetail.xml";
+ public static final String LOGO = "logo.png";
+ public static final String DYNAMIC_CLASSES_DIR = APP_DIR + File.separator + "dynamic_classes";
+ public static final String DYNAMIC_CLASSES_PACKAGE = "generated";
+
+ //Libellés websocket
+ public static final String CODE_WEB_SOCKET_PATH_APPLICATION_MESSAGE = "/application/message";
+ public static final String CODE_WEB_SOCKET_PATH_SYSTEME_MESSAGE = "/systeme/message";
+
+ //Extensions
+ public static String EXTENSION_PDF = "pdf";
+ public static String EXTENSION_EXCEL = "xlsx";
+
+ public static File getCurrentDirectory() {
+ String fileName = (String) System.getProperties().get("user.dir");
+ return new File(fileName);
+ }
+
+}
diff --git a/fdx-consultation/fdxconsultation-tools-module/pom.xml b/fdx-consultation/fdxconsultation-tools-module/pom.xml
new file mode 100644
index 0000000..893e171
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-tools-module/pom.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ </parent>
+ <artifactId>fdxconsultation-tools-module</artifactId>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+ <name>fdxconsultation-tools-module</name>
+ <modules>
+ <module>fdxconsultation-tools-entities</module>
+ <module>fdxconsultation-tools</module>
+ </modules>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <version>1.0</version>
+ </properties>
+</project>
diff --git a/fdx-consultation/nb-configuration.xml b/fdx-consultation/nb-configuration.xml
new file mode 100644
index 0000000..a65c451
--- /dev/null
+++ b/fdx-consultation/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+ <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+ <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+ <!--
+Properties that influence various parts of the IDE, especially code formatting and the like.
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+ <netbeans.hint.jdkPlatform>JDK_1.8</netbeans.hint.jdkPlatform>
+ </properties>
+</project-shared-configuration>
diff --git a/fdx-consultation/pom.xml b/fdx-consultation/pom.xml
new file mode 100644
index 0000000..25c08e6
--- /dev/null
+++ b/fdx-consultation/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>com.megatim.fdxconsultation</groupId>
+ <artifactId>fdxconsultation</artifactId>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>fdxconsultation-model</module>
+ <module>fdxconsultation-dao-ifaces</module>
+ <module>fdxconsultation-dao-impl</module>
+ <module>fdxconsultation-core-ifaces</module>
+ <module>fdxconsultation-core-impl</module>
+ <module>fdxconsultation-service-ifaces</module>
+ <module>fdxconsultation-service-impl</module>
+ <module>fdxconsultation-reporting</module>
+ <module>fdxconsultation-tools-module</module>
+ </modules>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <version>1.0</version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>com.megatim</groupId>
+ <artifactId>reporting-adhoc</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.megatim.fdxcommons.core.impl</groupId>
+ <artifactId>fdxcommons-core-impl</artifactId>
+ <version>1.0</version>
+ </dependency>
+ </dependencies>
+
+</project>
--
Gitblit v1.10.0