awk
2019-07-09
Sur la version du DCG G3 (DCG : Dialog Code Generator)
/* <DCG_EXCEPTION id="644" label="idMenu = id du Choix Svi" type="Action"> */ idMenu = getIdChoix(getSessionSvi(request), choixSvi); /* </DCG_EXCEPTION> */
this.setReferenceInCtxSession( request, "idMenu", idMenu );
addLog(request, "CONFIRM DDSLG_objId { Si537a2ba562f88b0ed24e8fab80913509366c055c }");
En migrant sur le DCG G4 on a :
/* <DCG_EXCEPTION id="644" label="idMenu = id du Choix Svi" type="Action"> */ idMenu = getIdChoix(getSessionSvi(request), choixSvi); /* </DCG_EXCEPTION> */
addLog(request, "CONFIRM DDSLG_objId { Si537a2ba562f88b0ed24e8fab80913509366c055c }");
La mise en session est donc perdue, ce qui provoque des erreurs dans le parcours client.
Parfois, le setReferenceInCtxSession est présent après la balise </DCG_EXCEPTION>
mais uniquement pour les cas simples (ce qui est à droite du égal est de type “primaire” comme un entier).
Il faudrait donc passer le code du setReferenceInCtxSession dans l’exception elle même.
/* <DCG_EXCEPTION id="644" label="idMenu = id du Choix Svi" type="Action"> */ idMenu = getIdChoix(getSessionSvi(request), choixSvi);
this.setReferenceInCtxSession( request, "idMenu", idMenu );
/* </DCG_EXCEPTION> */
addLog(request, "CONFIRM DDSLG_objId { Si537a2ba562f88b0ed24e8fab80913509366c055c }");
Le bout de code suivant a pour but de trouver les exceptions non migrées dans la version G4 et qui peuvent poser problème.
#!/bin/bash
for f in $*;
do
awk -n '
statut == 0 && /<DCG_EXCEPTION/ && /type="Action"/ && /label="[^"]+=[^"]+"/ { exception = $0 ; corrige = 0; statut = 1 }
!statut { next }
statut == 1 && /setRef/ { corrige = 1 }
statut == 1 && /loc_/ { corrige = 1 }
statut == 1 && /getSessionSvi\(request\).put/ { corrige = 1 }
statut == 1 && /set.*getSessionSvi/ { corrige = 1 }
statut == 1 && /+1/ { corrige = 1 }
statut == 1 && /+ 1/ { corrige = 1 }
statut == 1 && /store/ { corrige = 1 }
statut == 1 && /stat/ { corrige = 1 }
statut == 1 && /nd1IsNotIdentified/ { corrige = 1 }
statut == 2 && /setRef/ { print "OK" exception ; statut = 0; }
statut == 2 && !/setRef/ { print corrige ? "OK" exception : "KO" exception ; statut = 0; }
/<\/DCG_EXCEPTION/ { statut = 2 }
' < $f
done
Si après la balise de fin on a le setReference c’est qu’il n’y en a pas besoin.
Si le setReference est dans l’exception (ou que certains pattern y sont) c’est que l’exception a migrée ou bien qu’elle n’a pas besoin d’être migrée.