From 340e42825f18d60208f33e35e00b8ea57868430a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Manelphe?= Date: Tue, 2 Jan 2024 17:56:40 +0100 Subject: [PATCH] fix: modules initialize queries to dao --- .../arc/web/gui/norme/dao/GererNormeDao.java | 123 ++++++++++++++++++ .../gui/norme/service/InteractorNorme.java | 87 +++---------- 2 files changed, 140 insertions(+), 70 deletions(-) diff --git a/arc-web/src/main/java/fr/insee/arc/web/gui/norme/dao/GererNormeDao.java b/arc-web/src/main/java/fr/insee/arc/web/gui/norme/dao/GererNormeDao.java index 268d6ee40..a17a736d6 100644 --- a/arc-web/src/main/java/fr/insee/arc/web/gui/norme/dao/GererNormeDao.java +++ b/arc-web/src/main/java/fr/insee/arc/web/gui/norme/dao/GererNormeDao.java @@ -258,6 +258,129 @@ public void initializeNormage(VObject viewNormage) { vObjectService.initialize(viewNormage, query, dataObjectService.getView(dataModelNormage), defaultInputFields); } + + /** + * Query to get control rules view + * + * @param viewControle + */ + public void initializeControle(VObject viewControle) { + + ViewEnum dataModelControle = ViewEnum.IHM_CONTROLE_REGLE; + + ArcPreparedStatementBuilder query = new ArcPreparedStatementBuilder(); + + query.append(SQL.SELECT); + query.append(query.sqlListeOfColumnsFromModel(dataModelControle)); + query.append(SQL.FROM); + query.append(dataObjectService.getView(dataModelControle)); + query.append(SQL.WHERE); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.ID_NORME)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.PERIODICITE)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_INF)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_SUP)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VERSION)); + + // build the default value when adding a record + Map defaultInputFields = buildDefaultInputFieldsWithFirstSelectedRecord(ColumnEnum.ID_NORME, + ColumnEnum.PERIODICITE, ColumnEnum.VALIDITE_INF, ColumnEnum.VALIDITE_SUP, ColumnEnum.VERSION); + + vObjectService.initialize(viewControle, query, dataObjectService.getView(dataModelControle), defaultInputFields); + } + + /** + * Query to get mapping rules view + * + * @param viewMapping + */ + public void initializeMapping(VObject viewMapping) { + + ViewEnum dataModelMapping = ViewEnum.IHM_MAPPING_REGLE; + + ArcPreparedStatementBuilder query = new ArcPreparedStatementBuilder(); + query.append("SELECT mapping.id_regle, mapping.id_norme, mapping.validite_inf, mapping.validite_sup, mapping.version, mapping.periodicite, mapping.variable_sortie, mapping.expr_regle_col, mapping.commentaire, variables.type_variable_metier type_sortie, variables.nom_table_metier nom_table_metier /*, variables.nom_table_metier nom_table_metier */ "); + query.append("\n FROM arc.ihm_mapping_regle mapping INNER JOIN arc.ihm_jeuderegle jdr"); + query.append("\n ON mapping.id_norme = jdr.id_norme AND mapping.periodicite = jdr.periodicite AND mapping.validite_inf = jdr.validite_inf AND mapping.validite_sup = jdr.validite_sup AND mapping.version = jdr.version"); + query.append("\n INNER JOIN arc.ihm_norme norme"); + query.append("\n ON norme.id_norme = jdr.id_norme AND norme.periodicite = jdr.periodicite"); + query.append("\n LEFT JOIN (SELECT id_famille, nom_variable_metier, type_variable_metier, string_agg(nom_table_metier,',') as nom_table_metier FROM arc.ihm_mod_variable_metier group by id_famille, nom_variable_metier, type_variable_metier) variables"); + query.append("\n ON variables.id_famille = norme.id_famille AND variables.nom_variable_metier = mapping.variable_sortie"); + query.append(SQL.WHERE + "mapping."); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.ID_NORME)); + query.append(SQL.AND + "mapping."); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.PERIODICITE)); + query.append(SQL.AND + "mapping."); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_INF)); + query.append(SQL.AND + "mapping."); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_SUP)); + query.append(SQL.AND + "mapping."); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VERSION)); + + // build the default value when adding a record + Map defaultInputFields = buildDefaultInputFieldsWithFirstSelectedRecord(ColumnEnum.ID_NORME, + ColumnEnum.PERIODICITE, ColumnEnum.VALIDITE_INF, ColumnEnum.VALIDITE_SUP, ColumnEnum.VERSION); + + vObjectService.initialize(viewMapping, query, dataObjectService.getView(dataModelMapping), defaultInputFields); + } + + /** + * Query to get expressions view + * + * @param viewExpression + */ + public void initializeExpression(VObject viewExpression) { + + ViewEnum dataModelExpression = ViewEnum.IHM_EXPRESSION; + + ArcPreparedStatementBuilder query = new ArcPreparedStatementBuilder(); + + query.append(SQL.SELECT); + query.append(query.sqlListeOfColumnsFromModel(dataModelExpression)); + query.append(SQL.FROM); + query.append(dataObjectService.getView(dataModelExpression)); + query.append(SQL.WHERE); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.ID_NORME)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.PERIODICITE)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_INF)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VALIDITE_SUP)); + query.append(SQL.AND); + query.append(sqlEqualWithFirstSelectedRecord(ColumnEnum.VERSION)); + + // build the default value when adding a record + Map defaultInputFields = buildDefaultInputFieldsWithFirstSelectedRecord(ColumnEnum.ID_NORME, + ColumnEnum.PERIODICITE, ColumnEnum.VALIDITE_INF, ColumnEnum.VALIDITE_SUP, ColumnEnum.VERSION); + + vObjectService.initialize(viewExpression, query, dataObjectService.getView(dataModelExpression), defaultInputFields); + } + + /** + * Query to get ruleset view for copy + * + * @param viewExpression + */ + public void initializeJeuxDeReglesCopie(VObject viewJeuxDeReglesCopie) { + + ViewEnum dataModelJeuxDeReglesCopie = ViewEnum.IHM_JEUDEREGLE; + + ArcPreparedStatementBuilder query = new ArcPreparedStatementBuilder(); + + query.append(SQL.SELECT); + query.append("id_norme, periodicite, validite_inf, validite_sup, version, etat"); + query.append(SQL.FROM); + query.append(dataObjectService.getView(dataModelJeuxDeReglesCopie)); + + // build the default value when adding a record + Map defaultInputFields = new HashMap<>(); + + vObjectService.initialize(viewJeuxDeReglesCopie, query, dataObjectService.getView(dataModelJeuxDeReglesCopie), defaultInputFields); + } /** * generate a blank rules set for mapping based on variables declared in data diff --git a/arc-web/src/main/java/fr/insee/arc/web/gui/norme/service/InteractorNorme.java b/arc-web/src/main/java/fr/insee/arc/web/gui/norme/service/InteractorNorme.java index 2904e891f..2d313a384 100644 --- a/arc-web/src/main/java/fr/insee/arc/web/gui/norme/service/InteractorNorme.java +++ b/arc-web/src/main/java/fr/insee/arc/web/gui/norme/service/InteractorNorme.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -15,7 +14,6 @@ import org.springframework.web.context.WebApplicationContext; import fr.insee.arc.core.dataobjects.ArcPreparedStatementBuilder; -import fr.insee.arc.core.dataobjects.ViewEnum; import fr.insee.arc.utils.utils.LoggerHelper; import fr.insee.arc.web.gui.all.model.GuiModules; import fr.insee.arc.web.gui.all.service.ArcWebGenericService; @@ -66,17 +64,13 @@ public void putAllVObjects(ModelNorme model) { // putVObject(views.getViewNormage(), t -> initializeNormage(t, views.getViewJeuxDeRegles(), views.getViewModules())); // - putVObject(views.getViewControle(), t -> initializeControle(t, views.getViewJeuxDeRegles(), views.getViewModules(), - dataObjectService.getView(ViewEnum.IHM_CONTROLE_REGLE) )); + putVObject(views.getViewControle(), t -> initializeControle(t, views.getViewJeuxDeRegles(), views.getViewModules())); // - putVObject(views.getViewMapping(), t -> initializeMapping(t, views.getViewJeuxDeRegles(), views.getViewModules(), - dataObjectService.getView(ViewEnum.IHM_MAPPING_REGLE) )); + putVObject(views.getViewMapping(), t -> initializeMapping(t, views.getViewJeuxDeRegles(), views.getViewModules())); // - putVObject(views.getViewExpression(), t -> initializeExpression(t, views.getViewJeuxDeRegles(), views.getViewModules(), - dataObjectService.getView(ViewEnum.IHM_EXPRESSION) )); + putVObject(views.getViewExpression(), t -> initializeExpression(t, views.getViewJeuxDeRegles(), views.getViewModules())); // - putVObject(views.getViewJeuxDeReglesCopie(), t -> initializeJeuxDeReglesCopie(t, - dataObjectService.getView(ViewEnum.IHM_JEUDEREGLE) , getScope())); + putVObject(views.getViewJeuxDeReglesCopie(), t -> initializeJeuxDeReglesCopie(t, getScope())); } @Override @@ -204,21 +198,17 @@ public void initializeNormage(VObject viewNormage, VObject viewRulesSet, VObject * Initialize the {@link VObject} of a control ruleset. Only * get the load rule link to the selected rule set. */ - public void initializeControle(VObject moduleView, VObject viewRulesSet, VObject viewModules, String theTableName) { + public void initializeControle(VObject viewControle, VObject viewRulesSet, VObject viewModules) { Map> selection = viewRulesSet.mapContentSelected(); List> moduleSelection =viewModules.listContentSelected(); if (!selection.isEmpty() && !moduleSelection.isEmpty() && moduleSelection.get(0).get(1).equals(moduleIdentifier(GuiModules.control))) { - Map type = viewRulesSet.mapHeadersType(); - ArcPreparedStatementBuilder requete = new ArcPreparedStatementBuilder(); - requete.append("select id_norme,periodicite,validite_inf,validite_sup,version,id_regle,id_classe,rubrique_pere,rubrique_fils,borne_inf,borne_sup,condition,blocking_threshold,error_row_processing,pre_action,xsd_ordre,xsd_label_fils,xsd_role,commentaire from arc.ihm_controle_regle"); - whereRuleSetEquals(requete, selection, type); - - vObjectService.initialize(moduleView, requete, theTableName, defaultRuleInputFields(selection)); + dao.setSelectedRecords(selection); + dao.initializeControle(viewControle); } else { - vObjectService.destroy(moduleView); + vObjectService.destroy(viewControle); } } @@ -226,30 +216,15 @@ public void initializeControle(VObject moduleView, VObject viewRulesSet, VObject * Initialize the {@link VObject} of the mapping rule. Only * get the load rule link to the selected rule set. */ - public void initializeMapping(VObject viewMapping, VObject viewRulesSet, VObject viewModules, String theTableName) { + public void initializeMapping(VObject viewMapping, VObject viewRulesSet, VObject viewModules) { Map> selection = viewRulesSet.mapContentSelected(); List> moduleSelection =viewModules.listContentSelected(); if (!selection.isEmpty() && !moduleSelection.isEmpty() && moduleSelection.get(0).get(1).equals(moduleIdentifier(GuiModules.mapmodel))) { - Map type = viewRulesSet.mapHeadersType(); - - ArcPreparedStatementBuilder requete = new ArcPreparedStatementBuilder( - "SELECT mapping.id_regle, mapping.id_norme, mapping.validite_inf, mapping.validite_sup, mapping.version, mapping.periodicite, mapping.variable_sortie, mapping.expr_regle_col, mapping.commentaire, variables.type_variable_metier type_sortie, variables.nom_table_metier nom_table_metier /*, variables.nom_table_metier nom_table_metier */ "); - requete.append("\n FROM arc.ihm_mapping_regle mapping INNER JOIN arc.ihm_jeuderegle jdr"); - requete.append("\n ON mapping.id_norme = jdr.id_norme AND mapping.periodicite = jdr.periodicite AND mapping.validite_inf = jdr.validite_inf AND mapping.validite_sup = jdr.validite_sup AND mapping.version = jdr.version"); - requete.append("\n INNER JOIN arc.ihm_norme norme"); - requete.append("\n ON norme.id_norme = jdr.id_norme AND norme.periodicite = jdr.periodicite"); - requete.append("\n LEFT JOIN (SELECT id_famille, nom_variable_metier, type_variable_metier, string_agg(nom_table_metier,',') as nom_table_metier FROM arc.ihm_mod_variable_metier group by id_famille, nom_variable_metier, type_variable_metier) variables"); - requete.append("\n ON variables.id_famille = norme.id_famille AND variables.nom_variable_metier = mapping.variable_sortie"); - requete.append("\n WHERE mapping.id_norme" + requete.sqlEqual(selection.get("id_norme").get(0), type.get("id_norme"))); - requete.append("\n AND mapping.periodicite" + requete.sqlEqual(selection.get("periodicite").get(0), type.get("periodicite"))); - requete.append("\n AND mapping.validite_inf" + requete.sqlEqual(selection.get("validite_inf").get(0), type.get("validite_inf"))); - requete.append("\n AND mapping.validite_sup" + requete.sqlEqual(selection.get("validite_sup").get(0), type.get("validite_sup"))); - requete.append("\n AND mapping.version" + requete.sqlEqual(selection.get("version").get(0), type.get("version"))); - - vObjectService.initialize(viewMapping,requete,theTableName, defaultRuleInputFields(selection)); + dao.setSelectedRecords(selection); + dao.initializeMapping(viewMapping); } else { vObjectService.destroy(viewMapping); } @@ -259,21 +234,17 @@ public void initializeMapping(VObject viewMapping, VObject viewRulesSet, VObject * Initialize the {@link VObject} of the expression. Only * get the load rule link to the selected rule set. */ - public void initializeExpression(VObject moduleView, VObject viewRulesSet, VObject viewModules, String theTableName) { - loggerDispatcher.info(String.format("Initialize view table %s", theTableName), LOGGER); + public void initializeExpression(VObject viewExpression, VObject viewRulesSet, VObject viewModules) { Map> selection = viewRulesSet.mapContentSelected(); List> moduleSelection =viewModules.listContentSelected(); if (!selection.isEmpty() && !moduleSelection.isEmpty() && moduleSelection.get(0).get(1).equals(moduleIdentifier(GuiModules.expression))) { - Map type = viewRulesSet.mapHeadersType(); - ArcPreparedStatementBuilder requete = new ArcPreparedStatementBuilder();; - requete.append("select id_norme,periodicite,validite_inf,validite_sup,version,id_regle,expr_nom, expr_valeur, commentaire from arc.ihm_expression"); - whereRuleSetEquals(requete, selection, type); - vObjectService.initialize(moduleView, requete, theTableName, defaultRuleInputFields(selection)); + dao.setSelectedRecords(selection); + dao.initializeExpression(viewExpression); } else { - vObjectService.destroy(moduleView); + vObjectService.destroy(viewExpression); } } @@ -283,20 +254,15 @@ public void initializeExpression(VObject moduleView, VObject viewRulesSet, VObje * * @param viewJeuxDeReglesCopie */ - public void initializeJeuxDeReglesCopie(VObject viewJeuxDeReglesCopie, String theTableName, String scope) { + public void initializeJeuxDeReglesCopie(VObject viewJeuxDeReglesCopie, String scope) { LoggerHelper.info(LOGGER, "initializeJeuxDeReglesCopie"); if (scope != null) { - ArcPreparedStatementBuilder requete = new ArcPreparedStatementBuilder(); - requete.append("select id_norme, periodicite, validite_inf, validite_sup, version, etat from arc.ihm_jeuderegle "); - Map defaultInputFields = new HashMap<>(); - vObjectService.initialize(viewJeuxDeReglesCopie, requete, theTableName, defaultInputFields); + dao.initializeJeuxDeReglesCopie(viewJeuxDeReglesCopie); } else { vObjectService.destroy(viewJeuxDeReglesCopie); } } - - /** Appends a where clause for rulesets. */ protected void whereRuleSetEquals(ArcPreparedStatementBuilder requete, Map> selection, @@ -319,25 +285,6 @@ private static String moduleIdentifier(GuiModules moduleName) return InteractorNorme.ACTION_NAME+"."+moduleName.toString(); } - - /** - * Default fields for arc rules set - * @param selection - * @return - */ - private Map defaultRuleInputFields(Map> selection) { - Map defaultInputFields = new HashMap<>(); - defaultInputFields.put("id_norme", selection.get("id_norme").get(0)); - defaultInputFields.put("periodicite", selection.get("periodicite").get(0)); - defaultInputFields.put("validite_inf", selection.get("validite_inf").get(0)); - defaultInputFields.put("validite_sup", selection.get("validite_sup").get(0)); - defaultInputFields.put("version", selection.get("version").get(0)); - return defaultInputFields; - } - - - - /** * @return the selectedJeuDeRegle */