Skip to content

Feat/territories filter management#453

Open
GtanSndil wants to merge 25 commits intorefactor/refactoring_magma_traditional_in_new_magmafrom
feat/territoriesFilterManagement
Open

Feat/territories filter management#453
GtanSndil wants to merge 25 commits intorefactor/refactoring_magma_traditional_in_new_magmafrom
feat/territoriesFilterManagement

Conversation

@GtanSndil
Copy link
Contributor

@GtanSndil GtanSndil commented Mar 13, 2026

Principe: les requêtes ne doivent renvoyer que les territoires définis dans une liste, elle-même définie dans les properties

Souci : certains tests ne passent plus en raison de la taille de la requête (filtre très long) :
Error Bad Request with message <!doctype html><title>HTTP Status 400 ......
Request header is too large
En revanche, quand on lance MagmaDiffusion en local, les end-points correspondants renvoient ce qui est attendu.

Tests concernés pour mémoire :

should_return_1_iris_when_CantonOuVilleCodeDescendants_code0101_date20250904_typeIris_filtreNomPerouses(){
should_return_1_cantonOuVIlle_when_RegionCodeDescendants_code06_date20250904_typeCantonOuVille_filtreNomDembeni
should_return_1_commune_when_DepartementCodeDescendants_code45_date20250904_typeCommune_filtreNomOrleans
should_return_1_commune_when_COMCodeDescendants_code975_date20250904_typeCommune_filtreNomMiquelon

Il s'agit de tous les tests sur les descendants avec filtreNom non null
Avec la mutualisation du filtre, ce problème est réglé.

j'ai aussi retiré

<#if typeEnumAscendantsIris != "none">
a igeo:${typeEnumAscendantsIris} ;
</#if>

de la requête getAscendantsFauxIrisByCodeTypeDate.ftlh
Pour les pays, la requête est à part (getPaysDescendants.ftlh) et type ne peux valoir que Territoire => J'ai laissé la requête telle quelle.

Copy link
Member

@FBibonne FBibonne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne comprends pas pourquoi il y a une variable listeTypesGeo globale à toute la configuration Freemarker alors qu'il y en a une aussi dans les paramètres des requêtes Ascendants/descandants

Aussi, pour les paramètres des requêtes ascendants / descendants, on devrait avoir une List<TerritoireBase.TypeEnum> pour le filtre pour être plus parlant. La gestion de ce filtre peut se faire dans le composant Spring endpointUtil avec une méthode qui traite la logique de prendre le type en paramètre de la requête comme filtre ou de recourir au filtre par défaut.

if ("filtreNom".equals(recordComponent.getName())) {
return new ParameterValueDecoder.DelegaterDecoder<>(stringValue -> stringValue == null ? "*" : stringValue.toString());
}
if ("listeTypesGeo".equals(recordComponent.getName())) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inutile pour un type String il me semble mais pourrait être utile pour un type List<TerritoireBas.TypeEnum>

TypeEnumDescendantsUniteUrbaine typeEnumDescendantsUniteUrbaine,
TypeEnumDescendantsZoneDEmploi typeEnumDescendantsZoneDEmploi,
String filtreNom,
String listeTypesGeo,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Une List<TerritoireBase.TypeEnum> serait plus parlant


configuration.setWrapUncheckedExceptions(true);

String listeTypesGeo = Arrays.stream(typesAutorises.split(","))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A quoi sert cette variable globale si on a un listeTypesGeo dans AscendantsDescendantsRequestParametizer ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants