P6SPY :

P6SPY est un projet Open-Source qui permet de contrôler les requêtes envoyées par un programme au SGBD. Nous allons voir ici comment l’installer de manière à voir les requêtes qui passent par le WS de l’AMUE.

Nous partons du principe que ‘apows.war’ (l’application Web contenant les WS de l’AMUE) est déployée sur un serveur Tomcat dans le dossier ‘apows’ du répertoire ‘webapps’.

Voici les étapes à réaliser pour installer de P6SPY :

1/ Télécharger le driver P6SPY (le .zip contient les fichiers p6spy.jar et spy.properties).

2/ Mettre le fichier p6spy.jar dans le répertoire ‘WEB-INF/lib’ d’apows

3/ Modifier le bean datasource du fichier webservices-SpringContext.xml d’apows comme suit :

<bean id=”dataSource”

class=”org.apache.commons.dbcp.BasicDataSource”>

<property name=”driverClassName” value=”com.p6spy.engine.spy.P6SpyDriver” />

<property name=”url” value=”UrlDeVotreSGBD” />

<property name=”username” value=”VotreUsername” />

<property name=”password” value=”VotrePassword” />

</bean>

4/ Placer le ‘spy.properties’ dans le répertoire ‘WEB-INF/classes’ d’apows

5/ Dans le spy.properties, vérifier les valeurs suivantes

               module.log = com.p6spy.engine.logging.P6LogFactory
               ...
               Realdrive r= oracle.jdbc.driver.OracleDriver
               ...
               appender= com.p6spy.engine.logging.appender.FileLogger
               logfile     =  Path vers webapps/apows/spy.log

6/ Ajouter les jar suivantes dans apows/ WEB-INF/lib :

commons-dbcp.jar

commons-pool.jar

Voila, P6SPY est installé. Vous pouvez lancer votre serveur puis voir l’ensemble des requêtes qui ont circulées dans le fichier spy.log (dont l’emplacement est défini à l’étape 5).

 

NB : Chaque requête est loguée 2 fois : une fois avec les paramètres de requêtes sous la forme ‘?’ et une fois avec les paramètres de requêtes qui apparaissent en clair. Ces 2 requêtes sont séparées par un |

Pour choisir les éléments à rapporter dans spy.log, il faut jouer avec les valeurs de ‘excludecategories’ dans spy.properties (ex : excludecategories=info, debug, result, batch, resultset)

Récupération des inscriptions dans un autre cursus :

La récupération des inscriptions d’un étudiant dans d’autres cursus n’était pas présente dans la ‘pré-version’ du Web Service. Aujourd’hui que nous avons la version finale, nous pouvons récupérer ces informations.

Pour récupérer les inscriptions d’un étudiant à des cursus externes nous avons besoin d’un proxy :

AdministratifMetierServiceInterfaceProxy monProxyAdministratif

Voici les objets et méthodes utilisés par l’intermédiaire de ce proxy :

recupererCursusExterne -> CursusExternesEtTransfertsDTO

puis on récupère les CursusExterneDTO dans un tableau avec la méthode getListeCursusExternes() sur le CursusExternesEtTransfertsDTO retourné précédemment. Il ne reste ensuite qu’à parcourir ces éléments et à créer la liste des inscriptions aux cursus externes, attribut du bean Etudiant.

 

Voici le code de la méthode complète pour récupérer les inscriptions :

CursusExternesEtTransfertsDTO ctdto = monProxyAdministratif.recupererCursusExterne(etudiant.getCod_etu());

CursusExterneDTO[] listeCursusExt = ctdto.getListeCursusExternes();

for (int i = 0; i < listeCursusExt.length; i++) {

Inscription insc = new Inscription();

CursusExterneDTO cext = listeCursusExt[i];

//on renseigne l’inscription:

insc.setCod_anu(cext.getAnnee());

insc.setLib_etb(cext.getLibEtablissement());

insc.setCod_dac(cext.getLibDiplome());

insc.setLib_cmt_dac(cext.getIntituleDiplome());

insc.setRes(cext.getTemObtentionDip());

//ajout de l’inscription dans la liste:

e.getLinscdac().add(insc);

}

Installation du Web Service de l’AMUE :

Voici la démarche à suivre pour installer le WebService de l’Amue et utiliser la librairie ‘apo-webservicesclient.jar’ dans son projet.

1/ déployer apows.rar dans Tomcat (qui sera ensuite présent dans webapps/apows).

2/renseigner ses paramètres de connexion (jdbcUrl, user et password) à Apogee dans ‘webservices-SpringContext.xml’ présent dans le répertoire ‘apows/WEB-INF/classes’

3/ ajouter le contexte du WS dans le fichier server.xml du répertoire ‘conf’ de Tomcat, ex :

<Context path=”/apows” docBase=”C:/esupdev/esupdev-2.5-esup-2.1.01/uPortal-quick-start/webapps/apows” crossContext=”true” reloadable=”true”/>

4/ ajouter la librairie apo-webservicesclient.jar dans son projet

 

5/ configurer le fichier configUrlServices.properties et le placer dans le répertoire ‘WEB-INF/classes/’ . Si Tomcat est en ‘http://localhost:8080’ une fois lancé, il n’y a rien a changer dans configUrlServices.properties

 

 

Nous pouvons maintenant utiliser le WebService dans notre projet. Exemple :

//récupération du cod_etu et du cod_nne à partir du cod_ind d’un étudiant :

EtudiantMetierServiceInterfaceProxy monProxyEtu = new EtudiantMetierServiceInterfaceProxy();

IdentifiantsEtudiantDTO idetu = monProxyEtu.recupererIdentifiantsEtudiant(null, etudiant.getCod_ind(), null, null, null, null, null, null, null, “N”);

etudiant.setCod_etu(idetu.getCodEtu().toString());

etudiant.setCod_nne(idetu.getCodNneInd() + idetu.getCodCleNneInd());

Revue du code

Pour ce projet, nous utilisons le plugin Jupiter pour faire de la revue de code.

Voici comment se déroule une session de revue de code avec cet outil :

  1. Phase individuelle : chacun des participants parcourt le code du projet et annote les sources avec des commentaires sur les problèmes qu’il identifie. A l’issue de cette phase, à chaque commentaire de revue de code est associé un type et un niveau de sévérité.
  2. Phase d’équipe : l’équipe de développement examine chacun des commentaires pour juger de leur pertinence et en affecter la résolution à un des membres de l’équipe (Charlie dans notre cas ;-) ). A l’issue de cette phase, chaque commentaire de revue de code est donc affecté à un développeur avec le type de résolution à appliquer.
  3. Phase de reprise : chaque développeur à qui des commentaires de revision ont été affecté traite le problème. A l’issue de cette phase, le statut de la révision est mis à jour (idéalement il doit être à “clos”).

Ce plugin s’appuie sur des fichiers xml pour stocker la révision du code. Il faut bien sur que ces fichiers soient stockés dans la repository svn pour pouvoir être échangés.

Plusieurs séances de révision de code peuvent ainsi s’enchaîner pendant la durée de vie du projet.

Utilisation des messages d’erreur JSF :

Jusqu’à aujourd’hui les erreurs possibles lors du remplissage des trois formulaires de l’application étaient gérées ‘manuellement’. Le contrôleur vérifiait les paramètres renseignés, et construisait un message d’erreur ainsi qu’un booléen ‘erreur’ en attribut. Puis on vérifiait, dans la page xhtml, la valeur du booléen ‘erreur’ : si il était ‘vrai’ on affichait le message en rouge.

 

Tout ceci a été modifié afin d’utiliser les fonctionnalités offertes par JSF. Grâce à cela, la méthode du contrôleur qui vérifie les champs est moins complexe car elle contient moins de boucle ‘if’ imbriquées (nécessaires à la construction d’un message d’erreur présentable dans une seule ‘String’) et la page xhtml voit ces trois lignes de code (contenant la condition d’affichage du message d’erreur dans un attribut ‘rendered’) nécessaire au message d’erreur simplifiées en une seule, très courte. De plus le contrôleur n’a plus besoin d’avoir les variables ‘String message’ et ‘boolean erreur’ en attribut car la page xhtml n’a plus besoin d’y accéder.

 

Voici un exemple du code obtenu pour un formulaire simple (1 seul champ):

La méthode du contrôleur :

public String chercher() {

String message = “”;

if (codetu != null && !codetu.equals(“”)) {

String codindetu = service.getCodIndFromCodEtu(codetu);

if (codindetu != null) {

return etatcivilcontroller.lienEnterNumero(codindetu);

}

message = “Etudiant ” + codetu + ” inexistant”;

FacesMessage messageX = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message);

FacesContext.getCurrentInstance().addMessage(null, messageX);

} else {

message = “Veuillez rentrer un identifiant.”;

FacesMessage messageX = new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message);

FacesContext.getCurrentInstance().addMessage(null, messageX);

}

return View.CHERCHE_NUM;

}

L’affichage du message d’erreur dans page xhtml :

 

<h:form id=”formRechDossierWeb”>

<h:messages id=”champMessages” errorStyle=”color: red” />

Et voici le résultat pour un formulaire un peu plus complexe (3 champs) :

Messages d’erreur

 

Un point sur le ‘LookAndFeel’ :

Nous avions précisé dans les premiers post (‘Un point sur les facelets et JSF‘) de ce blog qu’il était possible de garder le ‘Look And Feel’ de l’application ‘MonDossierWeb’ d’origine ; nous allons apporter ici un peu plus de précisions.

En effet, si nous savions qu’il était possible de garder les mêmes class de style que dans l’application d’origine, il y a un point que nous n’avions pas abordé : le javascript.

L’application d’origine utilise par exemple du javascript sur l’action onMouseOver des lignes (<tr>) de ses ‘table’ pour les afficher en surbrillance lorsque l’on place la souris dessus. Exemple pour la page qui liste les inscriptions d’un étudiant:

<tr onMouseOver=”javascript:this.className=’uportal-background-highlight’”

onMouseOut=”javascript:this.className=’uportal-background-content’”>

Or, pour cette même page nous utilisons (dans la nouvelle version) une dataTable pour afficher le contenu d’une liste (‘linsciae’ la liste des inscriptions iae par exemple), attribut du bean ‘Etudiant’. Nous n’utilisons donc pas la balise <tr> puisqu’elle est générée automatiquement en utilisant les balises ‘column’ de la dataTable. Exemple :

<t:dataTable id=”tableiae” value=”#{etudiant.linsciae}” var=”ins” cellpadding=”5″ border=”0″ width=”100%”>

<h:column>

<f:facet name=”header”><u>Année</u></f:facet>

<h:outputText value=”#{ins.cod_anu}”/>

</h:column>

<h:column>

<f:facet name=”header”><u>Code</u></f:facet>

<h:outputText value=”#{ins.cod_etp}”/>

</h:column>

<h:column>

<f:facet name=”header”><u>Vers.</u></f:facet>

<h:outputText value=”#{ins.cod_vrs_vet}”/>

</h:column>

<h:column>

<f:facet name=”header”><u>Etape</u></f:facet>

<h:outputText value=”#{ins.lib_etp}”/>

</h:column>

</t:dataTable>

Heureusement la librairie tomahawk fournit une ‘dataTable’ plus évoluée que la librairie jsf. La dataTable tomahawk fournit par exemple les attributs ‘rowOnMouseOver’ et ‘rowOnMouseOut’ chargés de remplacer ‘onMouseOver’ et ‘onMouseOut’ de la balise <tr>. Il ne reste ainsi qu’à modifier :

<t:dataTable id=”tableiae” value=”#{etudiant.linsciae}” var=”ins” cellpadding=”5″ border=”0″ width=”100%”>

En

<t:dataTable id=”tabledac” value=”#{etudiant.linscdac}” var=”insd” cellpadding=”5″ rendered=”#{etudiant.existeInsDac}”

rowOnMouseOver=”javascript:this.className=’uportal-background-neutral-light’”

rowOnMouseOut=”javascript:this.className=’uportal-background-content’”>

pour obtenir le même rendu que dans l’application d’origine.

 

Utilisation du WS de l’Amue (3em partie):

Nous allons voir ici comment utiliser le WebService de l’Amue pour récupérer les informations concernant les résultats d’un étudiant à une étape donnée. En effet, nous avons précédemment vu comment récupérer les résultats aux diplômes et aux étapes, mais en cliquant sur une étape, l’étudiant doit aussi pouvoir visualiser ses résultats aux éléments pédagogiques la composant.

1/ Les résultats aux éléments pédagogiques :

Pour récupérer les informations sur les résultats d’un étudiant aux éléments pédagogiques d’une étape nous avons besoin d’un proxy :

PedagogiqueMetierServiceInterfaceProxy monProxyPedagogique

Voici les objets et méthodes utilisés par l’intermédiaire de ce proxy :

recupererContratPedagogiqueResultatElpEpr -> ContratPedagogiqueDTO

puis on récupère les ResultatElpEprDTO à partir de ContratPedagogiqueDTO .getResultatElpEpr()

 

A noter qu’en appelant ‘recupererContratPedagogiqueResultatElpEpr’ on donne différentes indications en paramètre : Le code étudiant, l’année universitaire, le code et la version de l’étape ainsi que la source des résultats (pour la vue enseignant et étudiant) :

- « Apogee » si on souhaite que le connecteur regarde les résultats directement dans les tables des résultats d’Apogée.

- « Apogee-extraction » si on souhaite que le connecteur regarde les résultats dans les tables des extractions d’Apogée.

 

Le tableau de ResultatElpEprDTO retourné par ContratPedagogiqueDTO(), contient une liste d’élément pédagogique avec leur description et les résultats de l’étudiant. Le tout est de savoir si ces éléments pédagogiques sont retournés ‘triés’. En effet nous devons afficher les résultats de manière ordonnée.

Exemple :

L1 DEG MENTION ADMIN ECO ET SOCIO résultats

L1 DEG AES résultats

SEMESTRE 1 AES résultats

UE 101 DROIT résultats

Intro au droit résultats

CM intro résultats

TD Intro résultats

Droit résultats

CM droit résultats

TD droit résultats

UE 102 …

SEMESTRE 2 …

L’arborescence affichée n’est pas toujours de la même profondeur. Un cours n’est pas forcément divisé en CM et TD par exemple.

Si le tableau est retourné non trié, et que nous avons par exemple l’élément ‘CM droit’ avant ‘Droit’ et ‘UE 101 DROIT’, il faudra effectuer un trie sur celui-ci avant de pouvoir renseigner les attributs listant les résultats de l’étudiant (prêts pour l’affichage). Les ResultatElpEprDTO retournés ont pour cela un attribut nommé ‘CodElpSup’ qui donne le code de l’élément pédagogique père de l’élément courant (dont le code est donné par l’attribut ‘codElp’).

 

Cependant il y a de forte chance que le tableau retourné soit trié. En effet, la requête utilisée pour récupérer ces éléments pédagogiques dans la version initiale du dossier étudiant utilisait les clauses ‘START WITH’, ‘CONNECT BY’ et ‘ORDER SIBLINGS BY’ qui permettent de trié hiérarchiquement (et dans l’ordre alphabétique) le resultset de la requête grâce aux colonnes ‘cod_elp_sup’et ‘cod_elp’ (et ‘lib_elp’ pour l’ordre alphabétique). L’affichage en indentation est ensuite assuré grâce à la colonne ‘level’, obtenu grâce à l’attribut ‘RngElp’ retourné par le WS.

Voici donc (dans le cas d’un tableau retourné trié) la méthode qui renseigne les attributs des éléments pédagogique d’une étape avec les résultats d’un étudiant :

public void setNotesElpEpr(Etudiant e, Etape et) {

 

ContratPedagogiqueDTO cpdto = monProxyPedagogique.recupererContratPedagogiqueResultatElpEpr(e.getCod_etu(), et.getAnnee(), et.getCode(), et.getVersion(), “Apogee-extraction”, null, null, null);

//recupération de la liste des éléments pédagogiques:

ResultatElpEprDTO[] reedto = cpdto.getResultatElpEpr();

 

for (int i = 0; i < reedto.length; i++ ) {

//recupération des éléments pédagogiques:

ElementPedagogique elp = new ElementPedagogique();

elp.setCode(reedto[i].getCodElp());

elp.setLibelle(reedto[i].getLibElp());

elp.setLevel(reedto[i].getRngElp());

ResultatElpDTO[] relpdto = reedto[i].getResultatsElp();

 

for (int j = 0; j < relpdto.length; j++ ) {

//recupération des résultats

int codsession = new Integer(relpdto[j].getCodSes());

if (codsession < 2) {

//1er session : juin

elp.setNote1(relpdto[j].getNotElp().toString());

elp.setRes1(relpdto[j].getLibAdm());

} else {

//2er session : septembre

elp.setNote2(relpdto[j].getNotElp().toString());

elp.setRes2(relpdto[j].getLibAdm());

}

}

//ajout de l’élément dans la liste

e.getElementsPedagogiques().add(elp);

}

}

 

3/ Point sur les informations manquantes ou non trouvées dans le WS :

A noter que je n’ai pas trouvé comment extraire les informations permettant de récupérer le calendrier des examens avec la date, l’heure, la durée, la salle etc. dans le WS. Pour cette partie nous utiliserons donc surement les requêtes ibatis ‘d’origines’

Pour les informations concernant les inscriptions dans d’autres cursus (avec l’établissement, le résultat, l’année, le type et la spécialité) il semble que le cas est été prévu (page 25 du document ‘dcd_ws_de_ia.doc’) par contre je n’ai pas trouvé les méthodes correspondante dans l’ébauche du WS donné récemment.

Utilisation du WS de l’Amue (2em partie):

Nous allons voir ici comment utiliser le WebService de l’Amue pour récupérer les informations concernant les inscriptions et les notes de l’étudiant.

1/ Les inscriptions (sans les Autres Cursus) :

Pour récupérer les informations sur les inscriptions d’un étudiant nous avons besoin de 3 proxys :

EtudiantMetierServiceInterfaceProxy monProxyEtu,

EtablissementServiceInterfaceProxy monProxyEtb,

AdministratifServiceInterfaceProxy monProxyAdministratif,

Ces proxy sont instanciés dans le constructeur du bean ‘EtudiantAmue’, qui sert à récupérer les informations par l’intermédiaire du WS et à renseigner le bean ‘Etudiant’ de l’application. Voici les objets et méthodes utilisés par l’intermédiaire de ces proxys :

monProxyAdministratif:

recupererIAEtapes -> InsAdmEtpDTO[ ]

monProxyEtu :

recupererInfosAdmEtu -> InfoAdmEtuDTO

monProxyEtb :

recupererOneEtablissementVO -> EtablissementVO

 

Voici enfin la méthode qui renseigne les attributs des inscriptions d’un étudiant :

public void setInscriptions(Etudiant e) {

e.getLinsciae().clear();

e.getLinscdac().clear();

//cursus dans l’université:

InsAdmEtpDTO[] insdtotab = monProxyAdministratif.recupererIAEtapes(e.getCod_etu(), “”, “”, “”);

for (int i = 0; i < insdtotab.length; i++) {

Inscription insc = new Inscription();

InsAdmEtpDTO insdto = insdtotab[i];

insc.setCod_anu(insdto.getAnneeIAE());

insc.setCod_etp(insdto.getCodeEtp());

insc.setCod_vrs_vet(insdto.getVersionEtp());

insc.setLib_etp(insdto.getLibLongEtp());

e.getLinsciae().add(insc);

e.setLib_etb(insc.getLib_etb());

}

//Autres cursus :

/**

* ????

*/

//première inscription universitaire :

InfoAdmEtuDTO iaetu = monProxyEtu.recupererInfosAdmEtu(e.getCod_etu());

e.setAnneePremiereInscrip(iaetu.getIndividuComplet().getDaaEntEtb());

EtablissementVO etbvo = monProxyEtb.recupererOneEtablissementVO(iaetu.getIndividuComplet().getCodEtb());

e.setEtbPremiereInscrip(etbvo.getLibEtb());

}

 

2/ Les Notes et résultats :

Pour récupérer les informations sur les résultats d’un étudiant nous avons besoin d’un proxy :

PedagogiqueMetierServiceInterfaceProxy monProxyPedagogique

Voici les objets et méthodes utilisés par l’intermédiaire de ce proxy :

 

recupererContratPedagogiqueResultatElpEpr -> ContratPedagogiqueDTO

puis on récupère les ResultatVdiVetDTO à partir de ContratPedagogiqueDTO .getResultatVdiVet()

 

A noter qu’en appelant ‘recupererContratPedagogiqueResultatElpEpr’ on donne différentes indications en paramètre : Le code étudiant et la source des résultats (pour la vue enseignant et étudiant) :

- « Apogee » si on souhaite que le connecteur regarde les résultats directement dans les tables des résultats d’Apogée.

- « Apogee-extraction » si on souhaite que le connecteur regarde les résultats dans les tables des extractions d’Apogée.

 

 

Voici enfin la méthode qui renseigne les attributs (‘diplomes’ et ‘etapes’ qui sont respectivement des listes de diplômes et d’étapes) concernant les résultats d’un étudiant :

public void setNotesEtResultats(Etudiant e) {

ContratPedagogiqueDTO cpdto = monProxyPedagogique.recupererContratPedagogiqueResultatElpEpr(e.getCod_etu(), null, null, null, null, null, null, null);

ResultatVdiVetDTO[] resultatVdiVet = cpdto.getResultatVdiVet();

e.getDiplomes().clear();

e.getEtapes().clear();

for (int i = 0; i < resultatVdiVet.length; i++ ) {

//information sur le diplome:

ResultatVdiVetDTO rdto = resultatVdiVet[i];

Diplome d = new Diplome();

d.setLib_web_vdi(rdto.getLibDip());

d.setCod_dip(rdto.getCodDip());

d.setCod_vrs_vdi(rdto.getCodVrsVdi().toString());

//information sur les résultats obtenus au diplome:

ResultatVdiDTO[] tabres = rdto.getResultatVdi();

for (int j = 0; j < tabres.length; j++ ) {

Resultat r = new Resultat();

ResultatVdiDTO res = tabres[j];

r.setSession(res.getLibSes());

r.setAdmission(res.getLibAdm());

r.setNote(res.getNotVdi());

if (j == 0) {

d.setAnnee(res.getCodAnu());

}

//ajout du résultat au diplome:

d.getResultats().add(r);

}

//ajout du diplome a la liste de diplomes de l’étudiant:

e.getDiplomes().add(d);

//information sur les etapes:

EtapeResVdiVetDTO[] etapes = rdto.getEtapes();

for (int j = 0; j < etapes.length; j++ ) {

EtapeResVdiVetDTO etape = etapes[j];

Etape et = new Etape();

et.setAnnee(etape.getCodAnu());

et.setCode(etape.getCodEtp());

et.setVersion(etape.getCodVrsVet().toString());

et.setLibelle(etape.getLibEtp());

//résultats de l’étape:

ResultatVetDTO[] tabresetape = etape.getResultatVet();

for (int k = 0; k < tabresetape.length; k++ ) {

ResultatVetDTO ret = tabresetape[k];

Resultat r = new Resultat();

r.setSession(ret.getLibSes());

r.setAdmission(ret.getLibAdm());

r.setNote(ret.getNotVet());

et.getResultats().add(r);

}

//ajout de l’étape a la liste d’étapes de l’étudiant:

e.getEtapes().add(et);

}

}

}

 

3/ Informations manquantes ou non trouvées dans le WS :

 

A noter que je n’ai pas réussi à extraire certaines informations à partir du WS :

 

- les inscriptions dans d’autres cursus (avec l’établissement, le résultat, l’année, le type et la spécialité). La méthode décrite plus haut renseigne les inscriptions à Nancy2 (année, code, version, étape).

 

- le calendrier des examens avec la date, l’heure, la durée, la salle etc.

Utilisation du WebService de l’Amue (1er partie):

Nous allons voir ici comment utiliser le WebService de l’Amue pour récupérer les informations concernant l’état-civil et les adresses d’un étudiant.

1/ L’Etat-civil :

Pour récupérer les informations sur l’état-civil d’un étudiant nous avons besoin de 4 proxy :

EtudiantMetierServiceInterfaceProxy monProxyEtu

ReferentielGeographieServiceInterfaceProxy monProxyGeo

EtablissementServiceInterfaceProxy monProxyEtb

ScolariteServiceInterfaceProxy monProxyScolarite

 

Ces proxy sont instanciés dans le constructeur du bean ‘EtudiantAmue’, qui sert à récupérer les informations par l’intermédiaire du WS et à renseigner le bean ‘Etudiant’ de l’application. Voici les objets et méthodes utilisés par l’intermédiaire de ces proxys :

 

 

 

monProxyEtu :

recupererIdentifiantsEtudiant -> IdentifiantsEtudiantDTO

recupererInfosAdmEtu -> InfoAdmEtuDTO

monProxyGeo :

recupererOneNationalite -> NationaliteDTO

recupererOneDepartement -> DepartementVO

recupererOnePaysVO -> PaysVO

monProxyEtb :

recupererOneEtablissementVO -> EtablissementVO

monProxyScolarite :

recupererOneBacOuEquVO -> BacOuEquVO

 

 

 

 

Voici enfin la méthode qui renseigne les attributs de l’état-civil d’un étudiant :

 

public void setEtatCivil(Etudiant e) {

//informations générales :

IdentifiantsEtudiantDTO idetu = monProxyEtu.recupererIdentifiantsEtudiant(null, e.getCod_ind(), null, null, null, null, null, null, null, null);

e.setCod_etu(idetu.getCodEtu().toString());

e.setCod_nne(idetu.getCodNneInd() + idetu.getCodCleNneInd());

InfoAdmEtuDTO iaetu = monProxyEtu.recupererInfosAdmEtu(e.getCod_etu());

e.setNom(iaetu.getIndividuComplet().getLibNomUsuInd() + ” ” + iaetu.getIndividuComplet().getLibPr1Ind());

//informations sur la naissance :

NationaliteDTO ndto = monProxyGeo.recupererOneNationalite(iaetu.getIndividuComplet().getCodPayNat());

e.setNationalite(ndto.getNationalite());

e.setDatenaissance(iaetu.getIndividuComplet().getDateNaiInd().toString());

e.setLieunaissance(iaetu.getIndividuComplet().getLibVilNaiEtu());

String coddeppaynai = iaetu.getIndividuComplet().getCodDepPayNai();

if (iaetu.getIndividuComplet().getCodTypDepPayNai().equals(“D”)) {

DepartementVO dvo = monProxyGeo.recupererOneDepartement(coddeppaynai);

e.setDepartementnaissance(dvo.getLibDept());

} else {

PaysVO pvo = monProxyGeo.recupererOnePaysVO(coddeppaynai);

e.setDepartementnaissance(pvo.getLibPay());

}

//informations sur l’inscription universitaire :

e.setAnnee(iaetu.getIndividuComplet().getDaaEntEtb());

EtablissementVO etbvo = monProxyEtb.recupererOneEtablissementVO(iaetu.getIndividuComplet().getCodEtb());

e.setEtablissement(etbvo.getLibEtb());

//informations sur le bac :

String codbac = iaetu.getBac().getCodBac();

e.setBac(monProxyScolarite.recupererOneBacOuEquVO(codbac).getLibBac());

e.setAnneeobtentionbac(iaetu.getBac().getDaaObtBacIba());

e.setDepartement(iaetu.getBac().getLibDep());

e.setMentionbac(iaetu.getBac().getLibMnb());

e.setTypetablissement(iaetu.getBac().getLibTpe());

e.setEtablissementbac(iaetu.getBac().getLibEtb());

//informations complémentaires :

e.setEmail(idetu.getEmailAnnu());

e.setUrlphoto(photo.urlPhoto(e.getCod_ind()));

}

 

 

2/ Les Adresses :

Pour récupérer les informations sur les adresses d’un étudiant nous avons besoin d’un proxy :

 

EtudiantMetierServiceInterfaceProxy monProxyEtu

 

Voici les objets et méthodes utilisés par l’intermédiaire de ce proxy :

monProxyEtu:

 

recupererInfosAdmEtu -> InfoAdmEtuDTO

recupererAdressesEtudiant -> CoordonneesDTO

 

 

Voici enfin la méthode qui renseigne les attributs des adresses d’un étudiant :

 

public void setAdresses(Etudiant e) {

InfoAdmEtuDTO iaetu = monProxyEtu.recupererInfosAdmEtu(e.getCod_etu());

String annee = String.valueOf(iaetu.getIndividuComplet().getDatModInd().getYear());

//récupération des coordonnées :

CoordonneesDTO cdto = monProxyEtu.recupererAdressesEtudiant(e.getCod_etu(), annee, “”);

//récupération des adresses, annuelle et fixe :

AdresseDTO ada = cdto.getAdresseAnnuelle();

AdresseDTO adf = cdto.getAdresseFixe();

//informations sur l’adresse annuelle :

e.setAdresseannuelle1(ada.getLibAd1());

e.setAdresseannuelle2(ada.getLibAd2());

e.setAdresseannuelle3(ada.getLibAd3());

e.setNumerotelannuel(ada.getNumTel());

e.setVilleannuelle(ada.getCommune().getNomCommune());

e.setPaysannuel(ada.getPays().getNomPays());


//informations sur l’adresse fixe :

e.setAdressefixe1(adf.getLibAd1());

e.setAdressefixe2(adf.getLibAd2());

e.setAdressefixe3(adf.getLibAd3());

e.setNumerotelfixe(adf.getNumTel());

e.setVillefixe(adf.getCommune().getNomCommune());

e.setPaysfixe(adf.getPays().getNomPays());

}