Java tutorial
/** * * ESUP-Portail MONDOSSIERWEB - Copyright (c) 2016 ESUP-Portail consortium * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package fr.univlorraine.mondossierweb.controllers; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.regex.Pattern; import javax.annotation.Resource; import org.apache.axis.AxisFault; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import fr.univlorraine.mondossierweb.GenericUI; import fr.univlorraine.mondossierweb.beans.Adresse; import fr.univlorraine.mondossierweb.beans.BacEtatCivil; import fr.univlorraine.mondossierweb.beans.CacheResultatsElpEpr; import fr.univlorraine.mondossierweb.beans.CacheResultatsVdiVet; import fr.univlorraine.mondossierweb.beans.Diplome; import fr.univlorraine.mondossierweb.beans.ElementPedagogique; import fr.univlorraine.mondossierweb.beans.Etape; import fr.univlorraine.mondossierweb.beans.Etudiant; import fr.univlorraine.mondossierweb.beans.Inscription; import fr.univlorraine.mondossierweb.beans.Resultat; import fr.univlorraine.mondossierweb.converters.EmailConverterInterface; import fr.univlorraine.mondossierweb.entities.apogee.DiplomeApogee; import fr.univlorraine.mondossierweb.services.apogee.ComposanteService; import fr.univlorraine.mondossierweb.services.apogee.ComposanteServiceImpl; import fr.univlorraine.mondossierweb.services.apogee.DiplomeApogeeService; import fr.univlorraine.mondossierweb.services.apogee.DiplomeApogeeServiceImpl; import fr.univlorraine.mondossierweb.services.apogee.InscriptionService; import fr.univlorraine.mondossierweb.services.apogee.InscriptionServiceImpl; import fr.univlorraine.mondossierweb.services.apogee.MultipleApogeeService; import fr.univlorraine.mondossierweb.utils.PropertyUtils; import fr.univlorraine.mondossierweb.utils.Utils; import gouv.education.apogee.commun.client.utils.WSUtils; import gouv.education.apogee.commun.client.ws.administratifmetier.AdministratifMetierServiceInterface; import gouv.education.apogee.commun.client.ws.etudiantmetier.EtudiantMetierServiceInterface; import gouv.education.apogee.commun.client.ws.pedagogiquemetier.PedagogiqueMetierServiceInterface; import gouv.education.apogee.commun.transverse.dto.administratif.CursusExterneDTO; import gouv.education.apogee.commun.transverse.dto.administratif.CursusExternesEtTransfertsDTO; import gouv.education.apogee.commun.transverse.dto.administratif.InsAdmAnuDTO2; import gouv.education.apogee.commun.transverse.dto.administratif.InsAdmEtpDTO2; import gouv.education.apogee.commun.transverse.dto.etudiant.AdresseDTO2; import gouv.education.apogee.commun.transverse.dto.etudiant.AdresseMajDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.CommuneMajDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.CoordonneesDTO2; import gouv.education.apogee.commun.transverse.dto.etudiant.CoordonneesMajDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.IdentifiantsEtudiantDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.IndBacDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.InfoAdmEtuDTO; import gouv.education.apogee.commun.transverse.dto.etudiant.TypeHebergementCourtDTO; import gouv.education.apogee.commun.transverse.dto.pedagogique.ContratPedagogiqueResultatElpEprDTO4; import gouv.education.apogee.commun.transverse.dto.pedagogique.ContratPedagogiqueResultatElpEprDTO5; import gouv.education.apogee.commun.transverse.dto.pedagogique.ContratPedagogiqueResultatVdiVetDTO; import gouv.education.apogee.commun.transverse.dto.pedagogique.ContratPedagogiqueResultatVdiVetDTO2; import gouv.education.apogee.commun.transverse.dto.pedagogique.EpreuveElpDTO2; import gouv.education.apogee.commun.transverse.dto.pedagogique.EtapeResVdiVetDTO; import gouv.education.apogee.commun.transverse.dto.pedagogique.EtapeResVdiVetDTO2; import gouv.education.apogee.commun.transverse.dto.pedagogique.ResultatElpDTO3; import gouv.education.apogee.commun.transverse.dto.pedagogique.ResultatEprDTO; import gouv.education.apogee.commun.transverse.dto.pedagogique.ResultatVdiDTO; import gouv.education.apogee.commun.transverse.dto.pedagogique.ResultatVetDTO; import gouv.education.apogee.commun.transverse.exception.WebBaseException; /** * Gestion de l'tudiant dont on consulte le dossier */ @Component public class EtudiantController { private Logger LOG = LoggerFactory.getLogger(EtudiantController.class); /** * la signification du type de rsultat 'COR'. */ private final String SIGNIFICATION_TYP_RESULT_COR = "Obtenu par Correspondance"; /* Injections */ @Resource private transient ApplicationContext applicationContext; @Resource private transient Environment environment; /** {@link DiplomeApogeeServiceImpl} */ @Resource private DiplomeApogeeService diplomeService; /** {@link InscriptionServiceImpl} */ @Resource private InscriptionService inscriptionService; /** {@link ComposanteServiceImpl} */ @Resource private ComposanteService composanteService; @Resource private transient UiController uiController; @Resource private transient UserController userController; @Resource private transient ConfigController configController; @Resource(name = "${emailConverter.implementation}") private transient EmailConverterInterface emailConverter; /** * proxy pour faire appel aux infos concernant un tudiant. */ private EtudiantMetierServiceInterface monProxyEtu; /** * proxy pour faire appel aux infos administratives du WS . */ private AdministratifMetierServiceInterface monProxyAdministratif; /** * proxy pour faire appel aux infos sur les rsultats du WS . */ private PedagogiqueMetierServiceInterface monProxyPedagogique; @Resource private MultipleApogeeService multipleApogeeService; /*@Resource private SessionController sessionController;*/ public boolean isEtudiantExiste(String codetu) { if (monProxyEtu == null) monProxyEtu = (EtudiantMetierServiceInterface) WSUtils.getService(WSUtils.ETUDIANT_SERVICE_NAME); try { //informations gnrales : IdentifiantsEtudiantDTO idetu; if (!PropertyUtils.isRecupMailAnnuaireApogee()) { idetu = monProxyEtu.recupererIdentifiantsEtudiant(codetu, null, null, null, null, null, null, null, null, "N"); } else { idetu = monProxyEtu.recupererIdentifiantsEtudiant(codetu, null, null, null, null, null, null, null, null, "O"); } if (idetu != null && idetu.getCodInd() != 0 && StringUtils.hasText(idetu.getCodInd().toString())) { return true; } return false; } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu /*if (ex.getNature().equals("remoteerror")){ LOG.error("Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + codetu,ex); }else{ LOG.info("Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + codetu,ex); }*/ return false; } catch (Exception ex) { //LOG.error("Probleme lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + codetu,ex); return false; } } public void recupererEtatCivil() { if (GenericUI.getCurrent().getEtudiant() != null && StringUtils.hasText(GenericUI.getCurrent().getEtudiant().getCod_etu())) { if (monProxyEtu == null) { monProxyEtu = (EtudiantMetierServiceInterface) WSUtils.getService(WSUtils.ETUDIANT_SERVICE_NAME); } if (monProxyAdministratif == null) { monProxyAdministratif = (AdministratifMetierServiceInterface) WSUtils .getService(WSUtils.ADMINISTRATIF_SERVICE_NAME); } try { //informations gnrales : IdentifiantsEtudiantDTO idetu; if (!PropertyUtils.isRecupMailAnnuaireApogee()) { idetu = monProxyEtu.recupererIdentifiantsEtudiant( GenericUI.getCurrent().getEtudiant().getCod_etu(), null, null, null, null, null, null, null, null, "N"); } else { idetu = monProxyEtu.recupererIdentifiantsEtudiant( GenericUI.getCurrent().getEtudiant().getCod_etu(), null, null, null, null, null, null, null, null, "O"); } GenericUI.getCurrent().getEtudiant().setCod_ind(idetu.getCodInd().toString()); //Gestion des codine null if (idetu.getNumeroINE() != null && idetu.getCleINE() != null) { GenericUI.getCurrent().getEtudiant().setCod_nne(idetu.getNumeroINE() + idetu.getCleINE()); } else { GenericUI.getCurrent().getEtudiant().setCod_nne(""); } //Pour ne renseigner la photo que si elle n'est pas renseigne. //GenericUI.getCurrent().getEtudiant().setPhoto(photo.getUrlPhoto(GenericUI.getCurrent().getEtudiant().getCod_ind(),GenericUI.getCurrent().getEtudiant().getCod_etu())); GenericUI.getCurrent().getEtudiant() .setPhoto(GenericUI.getCurrent().getPhotoProvider().getUrlPhoto( GenericUI.getCurrent().getEtudiant().getCod_ind(), GenericUI.getCurrent().getEtudiant().getCod_etu(), userController.isEnseignant(), userController.getCurrentUserName())); if (!PropertyUtils.isRecupMailAnnuaireApogee()) { // on passe par emailConverter pour rcuprer l'e-mail. GenericUI.getCurrent().getEtudiant() .setEmail(emailConverter.getMail(GenericUI.getCurrent().getEtudiant().getCod_etu())); } else { //on rcuprer l'e-mail grce au WS. GenericUI.getCurrent().getEtudiant().setEmail(idetu.getEmailAnnuaire()); } InfoAdmEtuDTO iaetu = monProxyEtu .recupererInfosAdmEtu(GenericUI.getCurrent().getEtudiant().getCod_etu()); //Utilisant du nom patronymique GenericUI.getCurrent().getEtudiant().setNom(iaetu.getPrenom1() + " " + iaetu.getNomPatronymique()); //Si afichage utilisant le nom usuel if (PropertyUtils.getTypeAffichageNomEtatCivil().equals(PropertyUtils.AFFICHAGE_NOM_BASIQUE) && iaetu.getNomUsuel() != null && !iaetu.getNomUsuel().equals("")) { GenericUI.getCurrent().getEtudiant().setNom(iaetu.getPrenom1() + " " + iaetu.getNomUsuel()); } else if (PropertyUtils.getTypeAffichageNomEtatCivil().equals(PropertyUtils.AFFICHAGE_NOM_STANDARD) && iaetu.getNomUsuel() != null && !iaetu.getNomUsuel().equals("") && !iaetu.getNomUsuel().equals(iaetu.getNomPatronymique())) { //Si affichage avec nom patronymique ET usuel et si nom usuel non null et diffrent du nom patronymique GenericUI.getCurrent().getEtudiant().setNom(iaetu.getPrenom1() + " " + iaetu.getNomPatronymique() + " (" + iaetu.getNomUsuel() + ")"); } //informations sur la naissance : //la nationalit: if (iaetu.getNationaliteDTO() != null) { GenericUI.getCurrent().getEtudiant() .setNationalite(iaetu.getNationaliteDTO().getLibNationalite()); } else { GenericUI.getCurrent().getEtudiant().setNationalite(""); } //la date de naissance: if (iaetu.getDateNaissance() != null) { Date d = iaetu.getDateNaissance(); GenericUI.getCurrent().getEtudiant().setDatenaissance(Utils.formatDateToString(d)); } else { GenericUI.getCurrent().getEtudiant().setDatenaissance(""); } //la ville de naissance: GenericUI.getCurrent().getEtudiant().setLieunaissance(iaetu.getLibVilleNaissance()); //rcupration du dpartement ou du pays de naissance: if (iaetu.getDepartementNaissance() != null) { GenericUI.getCurrent().getEtudiant() .setDepartementnaissance(iaetu.getDepartementNaissance().getLibDept()); } else { if (iaetu.getPaysNaissance() != null) { GenericUI.getCurrent().getEtudiant() .setDepartementnaissance(iaetu.getPaysNaissance().getLibPay()); } else { GenericUI.getCurrent().getEtudiant().setDepartementnaissance(""); } } //informations sur l'inscription universitaire : GenericUI.getCurrent().getEtudiant() .setAnneeInscriptionUniversitaire(iaetu.getAnneePremiereInscEnsSup()); if (iaetu.getEtbPremiereInscUniv() != null) { GenericUI.getCurrent().getEtudiant() .setEtablissement(iaetu.getEtbPremiereInscUniv().getLibEtb()); } else { GenericUI.getCurrent().getEtudiant().setEtablissement(""); } //informations sur le(s) bac(s) : if (GenericUI.getCurrent().getEtudiant().getListeBac() != null && GenericUI.getCurrent().getEtudiant().getListeBac().size() > 0) { GenericUI.getCurrent().getEtudiant().getListeBac().clear(); } else { GenericUI.getCurrent().getEtudiant().setListeBac(new ArrayList<BacEtatCivil>()); } GenericUI.getCurrent().setAnneeUnivEnCours(multipleApogeeService.getAnneeEnCours()); LOG.debug("anneeUnivEnCours : " + GenericUI.getCurrent().getAnneeUnivEnCours()); try { InsAdmAnuDTO2[] iaad2 = monProxyAdministratif.recupererIAAnnuelles_v2( GenericUI.getCurrent().getEtudiant().getCod_etu(), GenericUI.getCurrent().getAnneeUnivEnCours(), "ARE"); if (iaad2 != null) { LOG.debug("nb ia pour annee en cours : " + iaad2.length); boolean insOkTrouvee = false; for (int i = 0; i < iaad2.length; i++) { InsAdmAnuDTO2 iaad = iaad2[i]; //Si IA non annule if (!insOkTrouvee && iaad != null && iaad.getEtatIaa() != null && iaad.getEtatIaa().getCodeEtatIAA() != null && !iaad.getEtatIaa().getCodeEtatIAA().equals("A")) { insOkTrouvee = true; //recuperer le code cat sociale if (multipleApogeeService.isBoursier( GenericUI.getCurrent().getEtudiant().getCod_ind(), GenericUI.getCurrent().getAnneeUnivEnCours())) { GenericUI.getCurrent().getEtudiant().setBoursier(true); } //recuperer le statut if (iaad.getStatut() != null && iaad.getStatut().getCode() != null) { GenericUI.getCurrent().getEtudiant().setStatut(iaad.getStatut().getCode()); } GenericUI.getCurrent().getEtudiant().setInscritPourAnneeEnCours(true); //Si tmoin amnagement d'tude valu O if (iaad.getTemRgmAmgEtuIAA() != null && iaad.getTemRgmAmgEtuIAA().equals("O")) { GenericUI.getCurrent().getEtudiant().setTemAmenagementEtude(true); } } } if (!insOkTrouvee) { GenericUI.getCurrent().getEtudiant().setInscritPourAnneeEnCours(false); } String codeCatSocPro = multipleApogeeService.getCategorieSocioProfessionnelle( GenericUI.getCurrent().getEtudiant().getCod_ind(), GenericUI.getCurrent().getAnneeUnivEnCours()); if (StringUtils.hasText(codeCatSocPro) && !codeCatSocPro.equals("81") && !codeCatSocPro.equals("82") && !codeCatSocPro.equals("99") && !codeCatSocPro.equals("A")) { GenericUI.getCurrent().getEtudiant().setTemSalarie(true); } //Si catgorie socio-professionnelle renseigne /*if(iaad.getCatSocProfEtu()!=null && iaad.getCatSocProfEtu().getCodeCategorie()!=null){ String codeCatSocPro = iaad.getCatSocProfEtu().getCodeCategorie(); //test si la catgorie n'est pas une catgorie de non salari if(!codeCatSocPro.equals("81") && !codeCatSocPro.equals("82") && !codeCatSocPro.equals("99") && !codeCatSocPro.equals("A") ){ GenericUI.getCurrent().getEtudiant().setTemSalarie(true); } }*/ } else { GenericUI.getCurrent().getEtudiant().setInscritPourAnneeEnCours(false); } } catch (WebBaseException ex) { GenericUI.getCurrent().getEtudiant().setInscritPourAnneeEnCours(false); LOG.info("Aucune IA remonte par le WS pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu() + " pour l'anne " + GenericUI.getCurrent().getAnneeUnivEnCours()); } catch (AxisFault axf) { GenericUI.getCurrent().getEtudiant().setInscritPourAnneeEnCours(false); LOG.info("Aucune IA remonte par le WS pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu() + " pour l'anne " + GenericUI.getCurrent().getAnneeUnivEnCours()); } IndBacDTO[] bacvo = iaetu.getListeBacs(); if (bacvo != null) { for (int i = 0; i < bacvo.length; i++) { IndBacDTO bac = bacvo[i]; if (bac != null) { BacEtatCivil bec = new BacEtatCivil(); bec.setLib_bac(bac.getLibelleBac()); bec.setCod_bac(bac.getCodBac()); bec.setDaa_obt_bac_iba(bac.getAnneeObtentionBac()); if (bac.getDepartementBac() != null) { bec.setCod_dep(bac.getDepartementBac().getLibDept()); } else { bec.setCod_dep(""); } if (bac.getMentionBac() != null) { bec.setCod_mnb(bac.getMentionBac().getLibMention()); } else { bec.setCod_mnb(""); } if (bac.getTypeEtbBac() != null) { bec.setCod_tpe(bac.getTypeEtbBac().getLibLongTpe()); } else { bec.setCod_tpe(""); } if (bac.getEtbBac() != null) { bec.setCod_etb(bac.getEtbBac().getLibEtb()); } else { bec.setCod_etb(""); } GenericUI.getCurrent().getEtudiant().getListeBac().add(bec); } } } else { LOG.info( "Probleme avec le WS: AUCUN BAC RETOURNE, lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu()); BacEtatCivil bec = new BacEtatCivil(); bec.setLib_bac("/"); GenericUI.getCurrent().getEtudiant().getListeBac().add(bec); } //On recupere les numeros d'anonymat GenericUI.getCurrent().getEtudiant() .setNumerosAnonymat(multipleApogeeService.getNumeroAnonymat( GenericUI.getCurrent().getEtudiant().getCod_etu(), getAnneeUnivEnCours(GenericUI.getCurrent()))); //On appel recupererAdresses pour rcuprer le mail perso et le tel portable de l'tudiant recupererAdresses(); } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu() + " " + ex.getNature(), ex); } else { LOG.info( "Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu() + " " + ex.getNature(), ex); } //On met l'tudiant null pour remonter le problme GenericUI.getCurrent().setEtudiant(null); } catch (AxisFault axf) { //LOG.info("Probleme avec le WS lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu()+" "+axf.getMessage(),axf); axf.printStackTrace(); //On met l'tudiant null pour remonter le problme GenericUI.getCurrent().setEtudiant(null); } catch (Exception ex) { LOG.error("Probleme lors de la recherche de l'tat-civil pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); //On met l'tudiant null pour remonter le problme GenericUI.getCurrent().setEtudiant(null); } } } public void recupererAdresses() { if (GenericUI.getCurrent().getEtudiant() != null && StringUtils.hasText(GenericUI.getCurrent().getEtudiant().getCod_etu())) { if (monProxyAdministratif == null) { monProxyAdministratif = (AdministratifMetierServiceInterface) WSUtils .getService(WSUtils.ADMINISTRATIF_SERVICE_NAME); } try { String[] annees = monProxyAdministratif .recupererAnneesIa(GenericUI.getCurrent().getEtudiant().getCod_etu(), null); if (annees != null) { //rcupration de l'anne la plus rcente String annee = "0"; for (int i = 0; i < annees.length; i++) { if (Integer.parseInt(annees[i]) > Integer.parseInt(annee)) { annee = annees[i]; } } //rcupration des coordonnes : CoordonneesDTO2 cdto = monProxyEtu.recupererAdressesEtudiant_v2( GenericUI.getCurrent().getEtudiant().getCod_etu(), annee, "N"); //rcupration des adresses, annuelle et fixe : annee = cdto.getAnnee(); GenericUI.getCurrent().getEtudiant().setEmailPerso(cdto.getEmail()); GenericUI.getCurrent().getEtudiant().setTelPortable(cdto.getNumTelPortable()); AdresseDTO2 ada = cdto.getAdresseAnnuelle(); AdresseDTO2 adf = cdto.getAdresseFixe(); if (ada != null) { Adresse adresseAnnuelle = new Adresse(); adresseAnnuelle.setAnnee(Utils.getAnneeUniversitaireEnCours(annee)); //informations sur l'adresse annuelle : if (ada.getLibAde() != null) { adresseAnnuelle.setAdresseetranger(ada.getLibAde()); adresseAnnuelle.setCodePostal(""); adresseAnnuelle.setVille(""); } else { adresseAnnuelle.setAdresseetranger(null); if (ada.getCommune() != null) { adresseAnnuelle.setCodePostal(ada.getCommune().getCodePostal()); adresseAnnuelle.setVille(ada.getCommune().getNomCommune()); } else { adresseAnnuelle.setCodePostal(""); adresseAnnuelle.setVille(""); } } //TypeHebergementCourtDTO th = ada.getTypeHebergement(); TypeHebergementCourtDTO th = cdto.getTypeHebergement(); if (th != null) { //adresseAnnuelle.setType(th.getLibTypeHebergement()); adresseAnnuelle.setType(th.getCodTypeHebergement()); } else { adresseAnnuelle.setType(""); } adresseAnnuelle.setAdresse1(ada.getLibAd1()); adresseAnnuelle.setAdresse2(ada.getLibAd2()); adresseAnnuelle.setAdresse3(ada.getLibAd3()); adresseAnnuelle.setNumerotel(ada.getNumTel()); if (ada.getPays() != null) { adresseAnnuelle.setPays(ada.getPays().getLibPay()); adresseAnnuelle.setCodPays(ada.getPays().getCodPay()); } else { adresseAnnuelle.setPays(""); } GenericUI.getCurrent().getEtudiant().setAdresseAnnuelle(adresseAnnuelle); } if (adf != null) { Adresse adresseFixe = new Adresse(); //informations sur l'adresse fixe : adresseFixe.setAdresse1(adf.getLibAd1()); adresseFixe.setAdresse2(adf.getLibAd2()); adresseFixe.setAdresse3(adf.getLibAd3()); adresseFixe.setNumerotel(adf.getNumTel()); if (adf.getLibAde() != null) { adresseFixe.setAdresseetranger(adf.getLibAde()); adresseFixe.setCodePostal(""); adresseFixe.setVille(""); } else { adresseFixe.setAdresseetranger(null); if (adf.getCommune() != null) { adresseFixe.setCodePostal(adf.getCommune().getCodePostal()); adresseFixe.setVille(adf.getCommune().getNomCommune()); } else { adresseFixe.setCodePostal(""); adresseFixe.setVille(""); } } if (adf.getPays() != null) { adresseFixe.setPays(adf.getPays().getLibPay()); adresseFixe.setCodPays(adf.getPays().getCodPay()); } else { adresseFixe.setPays(""); } GenericUI.getCurrent().getEtudiant().setAdresseFixe(adresseFixe); } } else { LOG.info("Probleme lors de la recherche des annees d'IA pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu()); } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche de l'adresse pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } else { LOG.info( "Probleme avec le WS lors de la recherche de l'adresse pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } } catch (AxisFault axf) { LOG.info("Probleme avec le WS lors de la recherche de l'adresse pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), axf); } catch (Exception ex) { LOG.error("Probleme lors de la recherche de l'adresse pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } } } /** * va chercher et renseigne les informations concernant les inscriptions de * l'tudiant via le WS de l'Amue. * @return true si tout c'est bien pass, false sinon */ public void recupererInscriptions() { try { if (GenericUI.getCurrent().getEtudiant().getLinsciae() != null) { GenericUI.getCurrent().getEtudiant().getLinsciae().clear(); } else { GenericUI.getCurrent().getEtudiant().setLinsciae(new LinkedList<Inscription>()); } if (GenericUI.getCurrent().getEtudiant().getLinscdac() != null) { GenericUI.getCurrent().getEtudiant().getLinscdac().clear(); } else { GenericUI.getCurrent().getEtudiant().setLinscdac(new LinkedList<Inscription>()); } GenericUI.getCurrent().getEtudiant() .setLibEtablissement(multipleApogeeService.getLibEtablissementDef()); //cursus au sein de l'universit: InsAdmEtpDTO2[] insdtotab = monProxyAdministratif.recupererIAEtapes_v2( GenericUI.getCurrent().getEtudiant().getCod_etu(), "toutes", "ARE", "ARE"); if (insdtotab != null) { for (int i = 0; i < insdtotab.length; i++) { Inscription insc = new Inscription(); InsAdmEtpDTO2 insdto = insdtotab[i]; //on test si l'inscription n'est pas annule: if (insdto.getEtatIae() != null && insdto.getEtatIae().getCodeEtatIAE() != null && insdto.getEtatIae().getCodeEtatIAE().equals("E")) { //rcupration de l'anne int annee = new Integer(insdto.getAnneeIAE()); int annee2 = annee + 1; insc.setCod_anu(annee + "/" + annee2); //rcupration des informations sur l'tape insc.setCod_etp(insdto.getEtape().getCodeEtp()); insc.setCod_vrs_vet(insdto.getEtape().getVersionEtp()); insc.setLib_etp(insdto.getEtape().getLibWebVet()); //rcupration des informations sur le diplme insc.setCod_dip(insdto.getDiplome().getCodeDiplome()); insc.setVers_dip(insdto.getDiplome().getVersionDiplome()); insc.setLib_dip(insdto.getDiplome().getLibWebVdi()); //rcupration des informations sur la composante insc.setCod_comp(insdto.getComposante().getCodComposante()); //insc.setLib_comp(insdto.getComposante().getLibComposante()); insc.setLib_comp(composanteService.getLibelleComposante(insc.getCod_comp())); //rcupration de l'tat en rgle de l'inscription if (insdto.getInscriptionPayee().equals(Utils.LIBELLE_WS_INSCRIPTION_PAYEE)) { insc.setEstEnRegle(true); } else { insc.setEstEnRegle(false); } //ajout de l'inscription la liste GenericUI.getCurrent().getEtudiant().getLinsciae().add(0, insc); } } } //Autres cursus : CursusExternesEtTransfertsDTO ctdto = monProxyAdministratif .recupererCursusExterne(GenericUI.getCurrent().getEtudiant().getCod_etu()); if (ctdto != null) { CursusExterneDTO[] listeCursusExt = ctdto.getListeCursusExternes(); for (int i = 0; i < listeCursusExt.length; i++) { Inscription insc = new Inscription(); CursusExterneDTO cext = listeCursusExt[i]; int annee = new Integer(cext.getAnnee()); int annee2 = annee + 1; insc.setCod_anu(annee + "/" + annee2); if (cext.getEtablissement() != null && cext.getTypeAutreDiplome() != null) { insc.setLib_etb(cext.getEtablissement().getLibEtb()); // 24/04/2012 utilisation du libTypeDiplome a la place du CodeTypeDiplome insc.setCod_dac(cext.getTypeAutreDiplome().getLibTypeDiplome()); insc.setLib_cmt_dac(cext.getCommentaire()); if (cext.getTemObtentionDip() != null && cext.getTemObtentionDip().equals("N")) { insc.setRes("AJOURNE"); } else { insc.setRes("OBTENU"); } GenericUI.getCurrent().getEtudiant().getLinscdac().add(0, insc); } } } //premire inscription universitaire : InfoAdmEtuDTO iaetu = monProxyEtu .recupererInfosAdmEtu(GenericUI.getCurrent().getEtudiant().getCod_etu()); if (iaetu != null) { GenericUI.getCurrent().getEtudiant().setAnneePremiereInscrip(iaetu.getAnneePremiereInscUniv()); GenericUI.getCurrent().getEtudiant() .setEtbPremiereInscrip(iaetu.getEtbPremiereInscUniv().getLibEtb()); } GenericUI.getCurrent().setRecuperationWsInscriptionsOk(true); } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche des inscriptions pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } else { LOG.info( "Probleme avec le WS lors de la recherche des inscriptions pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } GenericUI.getCurrent().setRecuperationWsInscriptionsOk(false); } catch (Exception ex) { if (GenericUI.getCurrent().getEtudiant() != null) { LOG.error("Probleme lors de la recherche des inscriptions pour etudiant dont codetu est : " + GenericUI.getCurrent().getEtudiant().getCod_etu(), ex); } else { LOG.error("Probleme lors de la recherche des inscriptions pour etudiant ", ex); } GenericUI.getCurrent().setRecuperationWsInscriptionsOk(false); } } /** * va chercher et renseigne les informations concernant le calendrier des examens */ public void recupererCalendrierExamens() { if (GenericUI.getCurrent() != null && GenericUI.getCurrent().getEtudiant() != null && StringUtils.hasText(GenericUI.getCurrent().getEtudiant().getCod_ind())) { GenericUI.getCurrent().getEtudiant().setCalendrier( multipleApogeeService.getCalendrierExamens(GenericUI.getCurrent().getEtudiant().getCod_ind())); GenericUI.getCurrent().getEtudiant().setCalendrierRecupere(true); } } public String getAnneeUnivEnCours(GenericUI ui) { if (ui != null) { if (ui.getAnneeUnivEnCours() == null) { ui.setAnneeUnivEnCours(multipleApogeeService.getAnneeEnCours()); } return ui.getAnneeUnivEnCours(); } return multipleApogeeService.getAnneeEnCours(); } public String getAnneeUnivEnCoursToDisplay(GenericUI ui) { int annee = Integer.parseInt(getAnneeUnivEnCours(ui)); return annee + "/" + (annee + 1); } public String getFormationEnCours(String codetu) { return inscriptionService.getFormationEnCours(codetu); } /** * va chercher et renseigne les notes de * l'tudiant via le WS de l'Amue. */ public void recupererNotesEtResultats(Etudiant e) { if (monProxyPedagogique == null) { monProxyPedagogique = (PedagogiqueMetierServiceInterface) WSUtils .getService(WSUtils.PEDAGOGIQUE_SERVICE_NAME); } try { e.getDiplomes().clear(); e.getEtapes().clear(); String temoin = configController.getTemoinNotesEtudiant(); if (temoin == null || temoin.equals("")) { temoin = "T"; } String temoinEtatIae = configController.getTemoinEtatIaeNotesEtudiant(); if (temoinEtatIae == null || temoinEtatIae.equals("")) { temoinEtatIae = "E"; } String sourceResultat = PropertyUtils.getSourceResultats(); if (sourceResultat == null || sourceResultat.equals("")) { sourceResultat = "Apogee"; } // VR 09/11/2009 : Verif annee de recherche si sourceResultat = apogee-extraction : // Si different annee en cours => sourceResultat = Apogee if (sourceResultat.compareTo("Apogee-extraction") == 0) { // On recupere les resultats dans cpdto avec sourceResultat=Apogee sourceResultat = "Apogee"; ContratPedagogiqueResultatVdiVetDTO2[] cpdtoResult = monProxyPedagogique .recupererContratPedagogiqueResultatVdiVet_v2(e.getCod_etu(), "toutes", sourceResultat, temoin, "toutes", "tous", temoinEtatIae); // Puis dans cpdtoExtract avec sourceResultat=Apogee-extraction pour l'anne en cours temoin = null; sourceResultat = "Apogee-extraction"; String annee = getAnneeUnivEnCours(GenericUI.getCurrent()); ContratPedagogiqueResultatVdiVetDTO2[] cpdtoExtract; try { cpdtoExtract = monProxyPedagogique.recupererContratPedagogiqueResultatVdiVet_v2(e.getCod_etu(), annee, sourceResultat, temoin, "toutes", "tous", temoinEtatIae); } catch (Exception ex) { cpdtoExtract = null; } // Et on fusionne cpdtoResult et cpdtoExtract ArrayList<ContratPedagogiqueResultatVdiVetDTO2> cpdtoAl = new ArrayList<ContratPedagogiqueResultatVdiVetDTO2>(); for (int i = 0; i < cpdtoResult.length; i++) { if (cpdtoResult[i].getAnnee() != null) { if (cpdtoResult[i].getAnnee().compareTo(annee) != 0) { cpdtoAl.add(cpdtoResult[i]); } } } if (cpdtoExtract != null) { for (int i = 0; i < cpdtoExtract.length; i++) { cpdtoAl.add(cpdtoExtract[i]); } } ContratPedagogiqueResultatVdiVetDTO2[] cpdto = cpdtoAl .toArray(new ContratPedagogiqueResultatVdiVetDTO2[cpdtoAl.size()]); setNotesEtResultats(e, cpdto); } else { ContratPedagogiqueResultatVdiVetDTO2[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatVdiVet_v2(e.getCod_etu(), "toutes", sourceResultat, temoin, "toutes", "tous", temoinEtatIae); setNotesEtResultats(e, cpdto); } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } else { LOG.info(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } catch (AxisFault axf) { LOG.info( "Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), axf); } catch (Exception ex) { LOG.error("Probleme lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } /** * va chercher et renseigne les notes de * l'tudiant destination d'un enseignant via le WS de l'Amue. */ public void recupererNotesEtResultatsEnseignant(Etudiant e) { if (monProxyPedagogique == null) { monProxyPedagogique = (PedagogiqueMetierServiceInterface) WSUtils .getService(WSUtils.PEDAGOGIQUE_SERVICE_NAME); } if (e != null && StringUtils.hasText(e.getCod_etu())) { try { e.getDiplomes().clear(); e.getEtapes().clear(); String temoin = configController.getTemoinNotesEnseignant(); if (temoin == null || temoin.equals("")) { temoin = "AET"; } String temoinEtatIae = configController.getTemoinEtatIaeNotesEnseignant(); if (temoinEtatIae == null || temoinEtatIae.equals("")) { temoinEtatIae = "E"; } String sourceResultat = PropertyUtils.getSourceResultats(); if (sourceResultat == null || sourceResultat.equals("")) { sourceResultat = "Apogee"; } // VR 09/11/2009 : Verif annee de recherche si sourceResultat = apogee-extraction : // Si different annee en cours => sourceResultat = Apogee if (sourceResultat.compareTo("Apogee-extraction") == 0) { // On recupere les resultats dans cpdto avec sourceResultat=Apogee sourceResultat = "Apogee"; ContratPedagogiqueResultatVdiVetDTO2[] cpdtoResult = monProxyPedagogique .recupererContratPedagogiqueResultatVdiVet_v2(e.getCod_etu(), "toutes", sourceResultat, temoin, "toutes", "tous", temoinEtatIae); // Puis dans cpdtoExtract avec sourceResultat=Apogee-extraction pour l'anne en cours temoin = null; sourceResultat = "Apogee-extraction"; String annee = getAnneeUnivEnCours(GenericUI.getCurrent()); ContratPedagogiqueResultatVdiVetDTO2[] cpdtoExtract; try { cpdtoExtract = monProxyPedagogique.recupererContratPedagogiqueResultatVdiVet_v2( e.getCod_etu(), annee, sourceResultat, temoin, "toutes", "tous", temoinEtatIae); } catch (Exception ex) { cpdtoExtract = null; } // Et on fusionne cpdtoResult et cpdtoExtract ArrayList<ContratPedagogiqueResultatVdiVetDTO2> cpdtoAl = new ArrayList<ContratPedagogiqueResultatVdiVetDTO2>(); for (int i = 0; i < cpdtoResult.length; i++) { if (cpdtoResult[i].getAnnee() != null) { if (cpdtoResult[i].getAnnee().compareTo(annee) != 0) { cpdtoAl.add(cpdtoResult[i]); } } } if (cpdtoExtract != null) { for (int i = 0; i < cpdtoExtract.length; i++) { cpdtoAl.add(cpdtoExtract[i]); } } ContratPedagogiqueResultatVdiVetDTO2[] cpdto = cpdtoAl .toArray(new ContratPedagogiqueResultatVdiVetDTO2[cpdtoAl.size()]); setNotesEtResultats(e, cpdto); } else { ContratPedagogiqueResultatVdiVetDTO2[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatVdiVet_v2(e.getCod_etu(), "toutes", sourceResultat, temoin, "toutes", "tous", temoinEtatIae); setNotesEtResultats(e, cpdto); } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } else { LOG.info(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } catch (AxisFault axf) { LOG.info("Probleme lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), axf); } catch (Exception ex) { LOG.error("Probleme lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } } /** * renseigne les attributs concernant les notes et rsultats obtenus. * @param e * @param cpdto */ public void setNotesEtResultats(Etudiant e, ContratPedagogiqueResultatVdiVetDTO2[] resultatVdiVet) { try { if (e.getDiplomes() != null) { e.getDiplomes().clear(); } else { e.setDiplomes(new LinkedList<Diplome>()); } if (e.getEtapes() != null) { e.getEtapes().clear(); } else { e.setEtapes(new LinkedList<Etape>()); } //Si on a configure pour toujours afficher le rang, on affichera les rangs de l'tudiant. e.setAfficherRang(configController.isAffRangEtudiant()); if (resultatVdiVet != null && resultatVdiVet.length > 0) { for (int i = 0; i < resultatVdiVet.length; i++) { //information sur le diplome: ContratPedagogiqueResultatVdiVetDTO2 rdto = resultatVdiVet[i]; if (rdto.getDiplome() != null) { Diplome d = new Diplome(); d.setLib_web_vdi(rdto.getDiplome().getLibWebVdi()); d.setCod_dip(rdto.getDiplome().getCodDip()); d.setCod_vrs_vdi(rdto.getDiplome().getCodVrsVdi().toString()); int annee2 = new Integer(rdto.getAnnee()) + 1; d.setAnnee(rdto.getAnnee() + "/" + annee2); //information sur les rsultats obtenus au diplome: ResultatVdiDTO[] tabres = rdto.getResultatVdi(); if (tabres != null && tabres.length > 0) { for (int j = 0; j < tabres.length; j++) { Resultat r = new Resultat(); ResultatVdiDTO res = tabres[j]; r.setSession(res.getSession().getLibSes()); if (res.getNatureResultat() != null && res.getNatureResultat().getCodAdm() != null && res.getNatureResultat().getCodAdm().equals("0")) { //on est en Admissibilit l'tape.Pas en admission. //on le note pour que ce soit plus clair pour l'tudiant r.setNote(res.getNatureResultat().getLibAdm()); } //recuperation de la mention if (res.getMention() != null) { r.setCodMention(res.getMention().getCodMen()); r.setLibMention(res.getMention().getLibMen()); } String result = ""; if (res.getTypResultat() != null) { result = res.getTypResultat().getCodTre(); r.setAdmission(result); } if (res.getNotVdi() != null) { r.setNote(res.getNotVdi().toString()); //ajout pour note Jury if (res.getNotPntJurVdi() != null && !res.getNotPntJurVdi().equals(new BigDecimal(0))) { r.setNote(r.getNote() + "(+" + res.getNotPntJurVdi() + ")"); } } else { if (result.equals("DEF")) { r.setNote("DEF"); } } //Gestion du barme: if (res.getBarNotVdi() != null) { r.setBareme(res.getBarNotVdi()); } //ajout de la signification du rsultat dans la map if ((result != null && !result.equals("")) && !e.getSignificationResultats().containsKey(r.getAdmission())) { e.getSignificationResultats().put(r.getAdmission(), res.getTypResultat().getLibTre()); } //ajout du rsultat au diplome: d.getResultats().add(r); if (res.getNbrRngEtuVdi() != null && !res.getNbrRngEtuVdi().equals("")) { d.setRang(res.getNbrRngEtuVdi() + "/" + res.getNbrRngEtuVdiTot()); //On indique si on affiche le rang du diplome. d.setAfficherRang(configController.isAffRangEtudiant()); } } //ajout du diplome si on a au moins un rsultat //e.getDiplomes().add(0, d); } e.getDiplomes().add(0, d); } //information sur les etapes: EtapeResVdiVetDTO2[] etapes = rdto.getEtapes(); if (etapes != null && etapes.length > 0) { for (int j = 0; j < etapes.length; j++) { EtapeResVdiVetDTO2 etape = etapes[j]; Etape et = new Etape(); int anneeEtape = new Integer(etape.getCodAnu()); et.setAnnee(anneeEtape + "/" + (anneeEtape + 1)); et.setCode(etape.getEtape().getCodEtp()); et.setVersion(etape.getEtape().getCodVrsVet().toString()); et.setLibelle(etape.getEtape().getLibWebVet()); //ajout 16/02/2012 pour WS exposs pour la version mobile en HttpInvoker if (rdto.getDiplome() != null) { et.setCod_dip(rdto.getDiplome().getCodDip()); et.setVers_dip(rdto.getDiplome().getCodVrsVdi()); } //rsultats de l'tape: ResultatVetDTO[] tabresetape = etape.getResultatVet(); if (tabresetape != null && tabresetape.length > 0) { for (int k = 0; k < tabresetape.length; k++) { ResultatVetDTO ret = tabresetape[k]; Resultat r = new Resultat(); if (!ret.getEtatDelib().getCodEtaAvc().equals("T")) { et.setDeliberationTerminee(false); } else { et.setDeliberationTerminee(true); } r.setSession(ret.getSession().getLibSes()); if (ret.getNatureResultat() != null && ret.getNatureResultat().getCodAdm() != null && ret.getNatureResultat().getCodAdm().equals("0")) { //on est en Admissibilit l'tape.Pas en admission. //on le note pour que ce soit plus clair pour l'tudiant r.setNote(ret.getNatureResultat().getLibAdm()); } //recuperation de la mention if (ret.getMention() != null) { r.setCodMention(ret.getMention().getCodMen()); r.setLibMention(ret.getMention().getLibMen()); } String result = ""; if (ret.getTypResultat() != null) { result = ret.getTypResultat().getCodTre(); r.setAdmission(result); } if (ret.getNotVet() != null) { r.setNote(ret.getNotVet().toString()); //ajout note jury if (ret.getNotPntJurVet() != null && !ret.getNotPntJurVet().equals(new BigDecimal(0))) { r.setNote(r.getNote() + "(+" + ret.getNotPntJurVet() + ")"); } } else { if (result.equals("DEF")) { r.setNote("DEF"); } } //Gestion du barme: if (ret.getBarNotVet() != null) { r.setBareme(ret.getBarNotVet()); } //ajout de la signification du rsultat dans la map if (result != null && !result.equals("") && !e.getSignificationResultats().containsKey(r.getAdmission())) { e.getSignificationResultats().put(r.getAdmission(), ret.getTypResultat().getLibTre()); } //ajout du rsultat par ordre de code session (Juillet 2014) //ajout du resultat en fin de liste //et.getResultats().add(r); try { int session = Integer.parseInt(ret.getSession().getCodSes()); if (et.getResultats().size() > 0 && et.getResultats().size() >= session) { //ajout du rsultat la bonne place dans la liste et.getResultats().add((session - 1), r); } else { //ajout du rsultat en fin de liste et.getResultats().add(r); } } catch (Exception excep) { et.getResultats().add(r); } //ajout du rang if (ret.getNbrRngEtuVet() != null && !ret.getNbrRngEtuVet().equals("")) { et.setRang(ret.getNbrRngEtuVet() + "/" + ret.getNbrRngEtuVetTot()); //On calcule si on affiche ou non le rang. boolean cetteEtapeDoitEtreAffiche = false; List<String> codesAutorises = configController .getListeCodesEtapeAffichageRang(); if (codesAutorises != null && codesAutorises.contains(et.getCode())) { cetteEtapeDoitEtreAffiche = true; } if (configController.isAffRangEtudiant() || cetteEtapeDoitEtreAffiche) { //On affichera le rang de l'tape. et.setAfficherRang(true); //On remonte au niveau de l'tudiant qu'on affiche le rang e.setAfficherRang(true); } } } } //ajout de l'tape a la liste d'tapes de l'tudiant: //e.getEtapes().add(0, et); //en attendant la maj du WS : insererEtapeDansListeTriee(e, et); } } } } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } else { LOG.info( "Probleme avec le WS lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } catch (Exception ex) { LOG.error("Probleme lors de la recherche des notes et rsultats pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } private void insererEtapeDansListeTriee(Etudiant e, Etape et) { boolean insere = false; int rang = 0; int anneeEtape = new Integer(et.getAnnee().substring(0, 4)); while (!insere && rang < e.getEtapes().size()) { int anneeEtapeEnCours = new Integer(e.getEtapes().get(rang).getAnnee().substring(0, 4)); if (anneeEtape > anneeEtapeEnCours) { e.getEtapes().add(rang, et); insere = true; } rang++; } if (!insere) { e.getEtapes().add(et); } } /** * Rcupre les donnes retournes par le WS et les trie pour les afficher * @param e etudiant * @param et etape * @param reedto objet retourne par le WS * @param temoinEtatDelib */ public void setNotesElpEpr(Etudiant e, Etape et, ContratPedagogiqueResultatElpEprDTO5[] reedto, String temoinEtatDelib) { try { e.getElementsPedagogiques().clear(); //liste intermdiaire pour tri les lments pdagogiques: List<ElementPedagogique> liste1 = new ArrayList<ElementPedagogique>(); if (reedto != null && reedto.length > 0) { //On parcourt les ELP: for (int i = 0; i < reedto.length; i++) { ElementPedagogique elp = new ElementPedagogique(); elp.setCode(reedto[i].getElp().getCodElp()); elp.setLevel(reedto[i].getRngElp()); elp.setCodElpSup(reedto[i].getCodElpSup()); elp.setLibelle(reedto[i].getElp().getLibElp()); elp.setAnnee(""); elp.setEpreuve(false); if (reedto[i].getElp().getNatureElp().getCodNel().equals("FICM")) { //utile pour ne pas afficher les FICM par la suite elp.setAnnee("FICM"); } elp.setNote1(""); elp.setBareme1(0); elp.setRes1(""); elp.setNote2(""); elp.setBareme2(0); elp.setRes2(""); elp.setEcts(""); elp.setTemFictif(reedto[i].getElp().getNatureElp().getTemFictif()); elp.setTemSemestre("N"); elp.setTemSemestre(reedto[i].getElp().getNatureElp().getTemSemestre()); elp.setEtatDelib(""); //vrai si l'ELP est il dans un etat de delib qui nous convient en session1: boolean elpEtatDelibS1OK = false; //vrai si l'ELP est il dans un etat de delib qui nous convient en session2: boolean elpEtatDelibS2OK = false; //On s'occupe des rsultats : ResultatElpDTO3[] relpdto = reedto[i].getResultatsElp(); if (relpdto != null && relpdto.length > 0) { //on parcourt les rsultats pour l'ELP: for (int j = 0; j < relpdto.length; j++) { if (relpdto[j] != null && relpdto[j].getEtatDelib() != null && relpdto[j].getEtatDelib().getCodEtaAvc() != null) elp.setEtatDelib(relpdto[j].getEtatDelib().getCodEtaAvc()); //on affiche pas les rsultats d'admissibilit if (relpdto[j].getNatureResultat() == null || relpdto[j].getNatureResultat().getCodAdm() == null || !relpdto[j].getNatureResultat().getCodAdm().equals("0")) { //29/01/10 //On rcupre les notes si l'ELP est dans un tat de delibration compris dans la liste des tmoins paramtrs. if (relpdto[j].getEtatDelib() == null || temoinEtatDelib.contains(relpdto[j].getEtatDelib().getCodEtaAvc())) { int codsession = 0; if (relpdto[j].getSession() != null) { codsession = new Integer(relpdto[j].getSession().getCodSes()); } else { //Pour info, on arrive ici car on peut etre en VAC: validation d'acquis } String result = null; //le rsultat: if (relpdto[j].getTypResultat() != null) { result = relpdto[j].getTypResultat().getCodTre(); } //Test sur la session traite if (codsession < 2) { //l'elp est dans un tat de delibration compris dans la liste des tmoins paramtrs. elpEtatDelibS1OK = true; //1er session : juin if (relpdto[j].getNotElp() != null && !relpdto[j].getNotElp().equals("null")) { elp.setNote1(relpdto[j].getNotElp().toString()); if (relpdto[j].getNotPntJurElp() != null && !relpdto[j].getNotPntJurElp().equals(new BigDecimal(0))) { elp.setNote1( elp.getNote1() + "(+" + relpdto[j].getNotPntJurElp() + ")"); } } if ((elp.getNote1() == null || (elp.getNote1() != null && elp.getNote1().equals(""))) && result != null && result.equals("DEF")) { elp.setNote1("DEF"); } //Gestion du barme: if (relpdto[j].getBarNotElp() != null) { elp.setBareme1(relpdto[j].getBarNotElp()); } //ajout du rang si pas dj renseign via la session de juin. if (relpdto[j].getNbrRngEtuElp() != null && !relpdto[j].getNbrRngEtuElp().equals("") && (elp.getRang() == null || elp.getRang().equals(""))) { elp.setRang(relpdto[j].getNbrRngEtuElp() + "/" + relpdto[j].getNbrRngEtuElpTot()); } //on rcupre l'anne car si anne!=null c'est un PRC si pas dj renseign via la session de juin. if (relpdto[j].getCodAnu() != null && !relpdto[j].getCodAnu().equals("") && (elp.getAnnee() == null || elp.getAnnee().equals(""))) { elp.setAnnee(relpdto[j].getCodAnu()); } //on recupere les crdits ECTS si pas dj renseign via la session de juin. if (relpdto[j].getNbrCrdElp() != null && relpdto[j].getNbrCrdElp().toString() != null && !relpdto[j].getNbrCrdElp().toString().equals("") && (elp.getEcts() == null || elp.getEcts().equals(""))) { elp.setEcts(relpdto[j].getNbrCrdElp().toString()); } elp.setRes1(result); } else { //2em session : septembre //l'elp est dans un tat de delibration compris dans la liste des tmoins paramtrs. elpEtatDelibS2OK = true; if (relpdto[j].getNotElp() != null && !relpdto[j].getNotElp().equals("null")) { elp.setNote2(relpdto[j].getNotElp().toString()); if (relpdto[j].getNotPntJurElp() != null && !relpdto[j].getNotPntJurElp().equals(new BigDecimal(0))) { elp.setNote2( elp.getNote2() + "(+" + relpdto[j].getNotPntJurElp() + ")"); } } if ((elp.getNote2() == null || (elp.getNote2() != null && elp.getNote2().equals(""))) && result != null && result.equals("DEF")) { elp.setNote2("DEF"); } //Gestion du barme: if (relpdto[j].getBarNotElp() != null) { elp.setBareme2(relpdto[j].getBarNotElp()); } //ajout du rang if (relpdto[j].getNbrRngEtuElp() != null && !relpdto[j].getNbrRngEtuElp().equals("")) { elp.setRang(relpdto[j].getNbrRngEtuElp() + "/" + relpdto[j].getNbrRngEtuElpTot()); } //on rcupre l'anne car si getCodAnu()!=null c'est un PRC if (relpdto[j].getCodAnu() != null && !relpdto[j].getCodAnu().equals("")) { elp.setAnnee(relpdto[j].getCodAnu()); } //on recupere les crdits ECTS if (relpdto[j].getNbrCrdElp() != null && relpdto[j].getNbrCrdElp().toString() != null && !relpdto[j].getNbrCrdElp().toString().equals("")) { elp.setEcts(relpdto[j].getNbrCrdElp().toString()); } elp.setRes2(result); } //CAS DE NON OBTENTION PAR CORRESPONDANCE. if (relpdto[j].getLcc() == null) { //ajout de la signification du rsultat dans la map if (result != null && !result.equals("") && !e.getSignificationResultats().containsKey(result)) { e.getSignificationResultats().put(result, relpdto[j].getTypResultat().getLibTre()); } } } } //On affiche la correspondance meme si l'tat de dlibration n'est pas compris dans la liste des tmoins paramtrs. if (relpdto[j].getLcc() != null) { //les notes ont t obtenues par correspondance a session 1. elp.setNote1("COR"); //ajout de la signification du rsultat dans la map if (!e.getSignificationResultats().containsKey("COR")) { e.getSignificationResultats().put("COR", SIGNIFICATION_TYP_RESULT_COR); } } } } //ajout de l'lment dans la liste par ordre alphabtique: //liste1.add(elp); if (liste1.size() == 0) { liste1.add(elp); } else { int rang = 0; boolean insere = false; while (rang < liste1.size() && !insere) { if (liste1.get(rang).getCode().compareTo(elp.getCode()) > 0) { liste1.add(rang, elp); insere = true; } if (!insere) { rang++; } } if (!insere) { liste1.add(elp); } } //les epreuves de l'lment (si il y en a ) EpreuveElpDTO2[] epelpdto = reedto[i].getEpreuvesElp(); if (epelpdto != null && epelpdto.length > 0) { for (int j = 0; j < epelpdto.length; j++) { EpreuveElpDTO2 epreuve = epelpdto[j]; boolean EprNotee = false; //vrai si l'preuve est note ElementPedagogique elp2 = new ElementPedagogique(); elp2.setLibelle(epreuve.getEpreuve().getLibEpr()); elp2.setCode(epreuve.getEpreuve().getCodEpr()); elp2.setLevel(elp.getLevel() + 1); //Modif 20/02/2012 pour les WS HttpInvoker //elp2.setAnnee("epreuve"); elp2.setAnnee(""); elp2.setEpreuve(true); elp2.setCodElpSup(elp.getCode()); elp2.setNote1(""); elp2.setBareme1(0); elp2.setRes1(""); elp2.setNote2(""); elp2.setBareme2(0); elp2.setRes2(""); ResultatEprDTO[] repdto = epreuve.getResultatEpr(); //29/01/10 //On rcupre le tmoin TemCtlValCadEpr de l'preuve String TemCtlValCadEpr = epreuve.getEpreuve().getTemCtlValCadEpr(); if (repdto != null && repdto.length > 0) { for (int k = 0; k < repdto.length; k++) { int codsession = new Integer(repdto[k].getSession().getCodSes()); //09/01/13 //On recupere la note si : // On a reseign une liste de type preuve afficher et le type de l'preuve en fait partie // OU SI : // le tmoin d'avc fait partie de la liste des tmoins paramtrs // OU si le tmoin d'avc de l'elp pere fait partie de la liste des tmoins paramtrs // OU si le tmoin TemCtlValCadEpr est gal au parametre TemoinCtlValCadEpr de monDossierWeb.xml. boolean recuperationNote = false; List<String> lTypesEpreuveAffichageNote = configController .getTypesEpreuveAffichageNote(); if (lTypesEpreuveAffichageNote != null && lTypesEpreuveAffichageNote.size() > 0) { //On a renseign une liste de type preuve afficher if (lTypesEpreuveAffichageNote .contains(epreuve.getEpreuve().getTypEpreuve().getCodTep())) { recuperationNote = true; } } if (!recuperationNote) { //On n'a pas renseign de liste de type preuve afficher ou celui ci n'tait pas dans la liste if (codsession < 2) { if (temoinEtatDelib.contains(repdto[k].getEtatDelib().getCodEtaAvc()) || elpEtatDelibS1OK || TemCtlValCadEpr .equals(configController.getTemoinCtlValCadEpr())) recuperationNote = true; } else { if (temoinEtatDelib.contains(repdto[k].getEtatDelib().getCodEtaAvc()) || elpEtatDelibS2OK || TemCtlValCadEpr .equals(configController.getTemoinCtlValCadEpr())) recuperationNote = true; } } //test si on recupere la note ou pas if (recuperationNote) { if (codsession < 2) { //1er session : juin if (repdto[k].getNotEpr() != null) { elp2.setNote1(repdto[k].getNotEpr().replaceAll(",", ".")); //Gestion du barme: if (repdto[k].getBarNotEpr() != null) { elp2.setBareme1(repdto[k].getBarNotEpr()); } } if (elp2.getNote1() != null && !elp2.getNote1().equals("")) { EprNotee = true; } } else { //2er session : septembre if (repdto[k].getNotEpr() != null) { elp2.setNote2(repdto[k].getNotEpr().replaceAll(",", ".")); //Gestion du barme: if (repdto[k].getBarNotEpr() != null) { elp2.setBareme2(repdto[k].getBarNotEpr()); } } if (elp2.getNote2() != null && !elp2.getNote2().equals("")) { EprNotee = true; } } } } } //ajout de l'preuve dans la liste en tant qu'lment si elle a une note if (EprNotee) { liste1.add(elp2); } } } } } //ajout des lments dans la liste de l'tudiant en commenant par la ou les racine int niveauRacine = 1; if (liste1.size() > 0) { int i = 0; while (i < liste1.size()) { ElementPedagogique el = liste1.get(i); if (el.getCodElpSup() == null || el.getCodElpSup().equals("")) { //on a une racine: if (!el.getAnnee().equals("FICM")) { e.getElementsPedagogiques().add(el); } insererElmtPedagoFilsDansListe(el, liste1, e, niveauRacine); } i++; } } //suppression des preuve seules et quand elles ont les mmes notes que l'element pere: if (e.getElementsPedagogiques().size() > 0) { int i = 1; boolean suppr = false; while (i < e.getElementsPedagogiques().size()) { suppr = false; ElementPedagogique elp = e.getElementsPedagogiques().get(i); if (elp.isEpreuve()) { ElementPedagogique elp0 = e.getElementsPedagogiques().get(i - 1); if (i < (e.getElementsPedagogiques().size() - 1)) { ElementPedagogique elp1 = e.getElementsPedagogiques().get(i + 1); if (!elp0.isEpreuve() && !elp1.isEpreuve()) { if (elp0.getNote1().equals(elp.getNote1()) && elp0.getNote2().equals(elp.getNote2())) { //on supprime l'element i e.getElementsPedagogiques().remove(i); suppr = true; } } } else { if (!elp0.isEpreuve() && elp0.getNote1().equals(elp.getNote1()) && elp0.getNote2().equals(elp.getNote2())) { //on supprime l'element i e.getElementsPedagogiques().remove(i); suppr = true; } } } if (!suppr) { i++; } } } //Gestion des temoins fictif si temoinFictif est renseign dans monDossierWeb.xml if (configController.getTemoinFictif() != null && !configController.getTemoinFictif().equals("")) { if (e.getElementsPedagogiques().size() > 0) { List<Integer> listeRangAsupprimer = new LinkedList<Integer>(); int rang = 0; //on note les rangs des lments supprimer for (ElementPedagogique el : e.getElementsPedagogiques()) { if (el.getTemFictif() != null && !el.getTemFictif().equals("") && !el.getTemFictif().equals(configController.getTemoinFictif())) { //on supprime l'lment de la liste listeRangAsupprimer.add(rang); } rang++; } //on supprime les lments de la liste int NbElementSupprimes = 0; for (Integer rg : listeRangAsupprimer) { e.getElementsPedagogiques().remove(rg - NbElementSupprimes); NbElementSupprimes++; } } } //Gestion de la descendance des semestres si temNotesEtuSem est renseign et true dans monDossierWeb.xml if (configController.isTemNotesEtuSem()) { if (e.getElementsPedagogiques().size() > 0) { List<Integer> listeRangAsupprimer = new LinkedList<Integer>(); int rang = 0; int curSemLevel = 0; boolean supDesc = false; //on note les rangs des lments supprimer for (ElementPedagogique el : e.getElementsPedagogiques()) { if (el.getTemSemestre() != null && !el.getTemSemestre().equals("") && el.getTemSemestre().equals("O")) { curSemLevel = new Integer(el.getLevel()); supDesc = el.getEtatDelib() != null && !el.getEtatDelib().equals("") && !el.getEtatDelib().equals("T"); } else if (el.getLevel() <= curSemLevel) { supDesc = false; } if (supDesc && el.getLevel() > curSemLevel) { //on supprime l'lment de la liste listeRangAsupprimer.add(rang); } rang++; } //on supprime les lments de la liste int NbElementSupprimes = 0; for (Integer rg : listeRangAsupprimer) { e.getElementsPedagogiques().remove(rg - NbElementSupprimes); NbElementSupprimes++; } } } //ajout de l'tape slectionne en dbut de liste: ElementPedagogique ep = new ElementPedagogique(); ep.setAnnee(et.getAnnee()); ep.setCode(et.getCode()); ep.setLevel(1); ep.setLibelle(et.getLibelle()); e.setDeliberationTerminee(et.isDeliberationTerminee()); if (et.getResultats().size() > 0) { if (et.getResultats().get(0).getNote() != null) { ep.setNote1(et.getResultats().get(0).getNote().toString()); ep.setBareme1(et.getResultats().get(0).getBareme()); } if (et.getResultats().get(0).getAdmission() != null) ep.setRes1(et.getResultats().get(0).getAdmission()); } if (et.getResultats().size() > 1) { if (et.getResultats().get(1).getNote() != null) { ep.setNote2(et.getResultats().get(1).getNote().toString()); ep.setBareme2(et.getResultats().get(1).getBareme()); } if (et.getResultats().get(1).getAdmission() != null) ep.setRes2(et.getResultats().get(1).getAdmission()); } e.getElementsPedagogiques().add(0, ep); } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } else { LOG.info( "Probleme avec le WS lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } catch (Exception ex) { LOG.error( "Probleme lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } /** * ajoute les lments dans la liste d'lments de l'tudiant en corrigeant les levels (rangs). * @param elp * @param liste1 * @param e * @param niveauDuPere */ protected void insererElmtPedagoFilsDansListe(ElementPedagogique elp, List<ElementPedagogique> liste1, Etudiant e, int niveauDuPere) { for (ElementPedagogique el : liste1) { if (el.getCodElpSup() != null && !el.getCodElpSup().equals("")) { if (el.getCodElpSup().equals(elp.getCode()) && !el.getCode().equals(elp.getCode())) { //on affiche pas les FICM : if (!el.getAnnee().equals("FICM")) { el.setLevel(niveauDuPere + 1); e.getElementsPedagogiques().add(el); } //On test si on est pas sur une epreuve pour eviter les boucle infini dans le cas ou codEpr=CodElpPere if (!el.getAnnee().equals("epreuve")) insererElmtPedagoFilsDansListe(el, liste1, e, niveauDuPere + 1); } } } } /** * va chercher et renseigne les informations concernant les notes * et rsultats des lments de l'etape choisie * de l'tudiant plac en paramtre via le WS de l'Amue. */ public void recupererDetailNotesEtResultats(Etudiant e, Etape et) { try { if (monProxyPedagogique == null) monProxyPedagogique = (PedagogiqueMetierServiceInterface) WSUtils .getService(WSUtils.PEDAGOGIQUE_SERVICE_NAME); e.getElementsPedagogiques().clear(); String temoin = configController.getTemoinNotesEtudiant(); if (temoin == null || temoin.equals("")) { temoin = "T"; } String temoinEtatIae = configController.getTemoinEtatIaeNotesEtudiant(); if (temoinEtatIae == null || temoinEtatIae.equals("")) { temoinEtatIae = "E"; } String sourceResultat = PropertyUtils.getSourceResultats(); if (sourceResultat == null || sourceResultat.equals("")) { sourceResultat = "Apogee"; } // VR 09/11/2009 : Verif annee de recherche si sourceResultat = apogee-extraction : // Si different annee en cours => sourceResultat = Apogee if (sourceResultat.compareTo("Apogee-extraction") == 0) { String annee = getAnneeUnivEnCours(GenericUI.getCurrent()); if (et.getAnnee().substring(0, 4).compareTo(annee) == 0) { sourceResultat = "Apogee-extraction"; temoin = null; } else { sourceResultat = "Apogee"; } } //07/09/10 if (sourceResultat.compareTo("Apogee-extraction") == 0) { //07/09/10 //on prend le tmoin pour Apogee-extraction ContratPedagogiqueResultatElpEprDTO5[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatElpEpr_v6(e.getCod_etu(), et.getAnnee().substring(0, 4), et.getCode(), et.getVersion(), sourceResultat, temoin, "toutes", "tous", temoinEtatIae); //29/01/10 //on est dans le cas d'une extraction apoge setNotesElpEpr(e, et, cpdto, "AET"); } else { //29/01/10 //On rcupre pour tout les tats de dlibration et on fera le trie aprs ContratPedagogiqueResultatElpEprDTO5[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatElpEpr_v6(e.getCod_etu(), et.getAnnee().substring(0, 4), et.getCode(), et.getVersion(), sourceResultat, "AET", "toutes", "tous", temoinEtatIae); setNotesElpEpr(e, et, cpdto, temoin); } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } else { LOG.info(ex.getLastErrorMsg() + " Probleme avec le WS lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } catch (AxisFault axf) { axf.printStackTrace(); //LOG.info("Probleme lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(),axf); } catch (Exception ex) { LOG.error( "Probleme lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(), ex); } } /** * va chercher et renseigne les notes de * l'tudiant via le WS de l'Amue. */ public void recupererDetailNotesEtResultatsEnseignant(Etudiant e, Etape et) { try { if (monProxyPedagogique == null) { monProxyPedagogique = (PedagogiqueMetierServiceInterface) WSUtils .getService(WSUtils.PEDAGOGIQUE_SERVICE_NAME); } e.getElementsPedagogiques().clear(); String temoin = configController.getTemoinNotesEnseignant(); if (temoin == null || temoin.equals("")) { temoin = "AET"; } String temoinEtatIae = configController.getTemoinEtatIaeNotesEnseignant(); if (temoinEtatIae == null || temoinEtatIae.equals("")) { temoinEtatIae = "E"; } String sourceResultat = PropertyUtils.getSourceResultats(); if (sourceResultat == null || sourceResultat.equals("")) { sourceResultat = "Apogee"; } // VR 09/11/2009 : Verif annee de recherche si sourceResultat = apogee-extraction : // Si different annee en cours => sourceResultat = Apogee if (sourceResultat.compareTo("Apogee-extraction") == 0) { String annee = getAnneeUnivEnCours(GenericUI.getCurrent()); if (et.getAnnee().substring(0, 4).compareTo(annee) == 0) { sourceResultat = "Apogee-extraction"; temoin = null; } else { sourceResultat = "Apogee"; } } // 07/12/11 rcupration du fonctionnement identique la rcupraition des notes pour les tudiants. if (sourceResultat.compareTo("Apogee-extraction") == 0) { ContratPedagogiqueResultatElpEprDTO5[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatElpEpr_v6(e.getCod_etu(), et.getAnnee().substring(0, 4), et.getCode(), et.getVersion(), sourceResultat, temoin, "toutes", "tous", temoinEtatIae); setNotesElpEpr(e, et, cpdto, "AET"); } else { ContratPedagogiqueResultatElpEprDTO5[] cpdto = monProxyPedagogique .recupererContratPedagogiqueResultatElpEpr_v6(e.getCod_etu(), et.getAnnee().substring(0, 4), et.getCode(), et.getVersion(), sourceResultat, "AET", "toutes", "tous", temoinEtatIae); setNotesElpEpr(e, et, cpdto, temoin); } } catch (WebBaseException ex) { //Si on est dans un cas d'erreur non expliqu if (ex.getNature().equals("remoteerror")) { LOG.error( "Probleme avec le WS lors de la recherche des notes et rsultats a une tape pour etudiant dont codind est : " + e.getCod_ind(), ex); } else { LOG.info(ex.getLastErrorMsg() + " pour etudiant dont codind est : " + e.getCod_ind() + " recupererDetailNotesEtResultatsEnseignant(" + et.getAnnee() + "," + et.getCode() + "/" + et.getVersion() + ")"); } } catch (AxisFault axf) { axf.printStackTrace(); //LOG.info("Probleme lors de la recherche des notes et rsultats a une tape pour etudiant dont codetu est : " + e.getCod_etu(),axf); } catch (Exception ex) { LOG.error( "Probleme lors de la recherche des notes et rsultats a une tape pour etudiant dont codind est : " + e.getCod_ind(), ex); } } public void renseigneNotesEtResultats(Etudiant e) { //On regarde si on a pas dj les infos dans le cache: String rang = getRangNotesEtResultatsEnCache(true, e); if (rang == null) { recupererNotesEtResultats(e); //AJOUT DES INFOS recupres dans le cache. true car on est en vue Etudiant ajouterCacheResultatVdiVet(true, e); } else { //on rcupre les infos du cache grace au rang : recupererCacheResultatVdiVet(new Integer(rang), e); } } public void renseigneNotesEtResultatsVueEnseignant(Etudiant e) { //On regarde si on a pas dj les infos dans le cache: String rang = getRangNotesEtResultatsEnCache(false, e); if (rang == null) { recupererNotesEtResultatsEnseignant(e); //AJOUT DES INFOS recupres dans le cache. true car on est en vue Etudiant ajouterCacheResultatVdiVet(false, e); } else { //on rcupre les infos du cache grace au rang : recupererCacheResultatVdiVet(new Integer(rang), e); } } public void renseigneDetailNotesEtResultats(Etape etape) { //On regarde si on a pas dj les infos dans le cache: String rang = getRangDetailNotesEtResultatsEnCache(etape, true, GenericUI.getCurrent().getEtudiant()); if (rang == null) { recupererDetailNotesEtResultats(GenericUI.getCurrent().getEtudiant(), etape); //AJOUT DES INFOS recupres dans le cache. true car on est en vue Etudiant ajouterCacheDetailNotesEtResultats(etape, true, GenericUI.getCurrent().getEtudiant()); } else { //on rcupre les infos du cache grace au rang : recupererCacheDetailNotesEtResultats(new Integer(rang), GenericUI.getCurrent().getEtudiant()); } } public void renseigneDetailNotesEtResultatsEnseignant(Etape etape) { //On regarde si on a pas dj les infos dans le cache: String rang = getRangDetailNotesEtResultatsEnCache(etape, false, GenericUI.getCurrent().getEtudiant()); if (rang == null) { recupererDetailNotesEtResultatsEnseignant(GenericUI.getCurrent().getEtudiant(), etape); //AJOUT DES INFOS recupres dans le cache. false car on est en vue Enseignant ajouterCacheDetailNotesEtResultats(etape, false, GenericUI.getCurrent().getEtudiant()); } else { //on rcupre les infos du cache grace au rang : recupererCacheDetailNotesEtResultats(new Integer(rang), GenericUI.getCurrent().getEtudiant()); } } /* * @param etape * @param vueEtudiant * @return le rang dans la liste des Notes et Rsultat (aux elp et epr) en cache pour la vueEtudiant */ private String getRangDetailNotesEtResultatsEnCache(Etape etape, boolean vueEtudiant, Etudiant e) { int rang = 0; boolean enCache = false; //on parcourt le rsultatElpEpr pour voir si on a ce qu'on cherche: for (CacheResultatsElpEpr cree : e.getCacheResultats().getResultElpEpr()) { if (!enCache) { //si on a dj les infos: if (cree.getEtape().getAnnee().equals(etape.getAnnee()) && cree.getEtape().getCode().equals(etape.getCode()) && cree.getEtape().getVersion().equals(etape.getVersion()) && cree.isVueEtudiant() == vueEtudiant) { enCache = true; } else { //on a pas trouv, on incrmente le rang pour se placer sur le rang suivant rang++; } } } //si on a pas les infos en cache: if (!enCache) { return null; } return "" + rang; } /** * * @param vueEtudiant * @return le rang dans la liste des Notes et Rsultat (aux diplomes et tapes) en cache pour la vueEtudiant */ private String getRangNotesEtResultatsEnCache(boolean vueEtudiant, Etudiant e) { int rang = 0; boolean enCache = false; //on parcourt le rsultatVdiVet pour voir si on a ce qu'on cherche: if (e.getCacheResultats() != null && e.getCacheResultats().getResultVdiVet() != null) { for (CacheResultatsVdiVet crvv : e.getCacheResultats().getResultVdiVet()) { if (!enCache) { //si on a dj les infos: if (crvv.isVueEtudiant() == vueEtudiant) { enCache = true; } else { //on a pas trouv, on incrmente le rang pour se placer sur le rang suivant rang++; } } } } //si on a pas les infos en cache: if (!enCache) { return null; } return "" + rang; } /** * On complte les infos du cache pour les Rsultats aux diplomes et tapes. * @param vueEtudiant */ public void ajouterCacheResultatVdiVet(boolean vueEtudiant, Etudiant e) { CacheResultatsVdiVet crvv = new CacheResultatsVdiVet(); crvv.setVueEtudiant(vueEtudiant); crvv.setDiplomes(new LinkedList<Diplome>(e.getDiplomes())); crvv.setEtapes(new LinkedList<Etape>(e.getEtapes())); e.getCacheResultats().getResultVdiVet().add(crvv); } /** * On complte les infos du cache pour les Rsultats aux elp et epr. * @param vueEtudiant */ public void ajouterCacheDetailNotesEtResultats(Etape etape, boolean vueEtudiant, Etudiant e) { CacheResultatsElpEpr cree = new CacheResultatsElpEpr(); cree.setVueEtudiant(vueEtudiant); cree.setEtape(etape); if (e.getElementsPedagogiques() != null && e.getElementsPedagogiques().size() > 0) { cree.setElementsPedagogiques(new LinkedList<ElementPedagogique>(e.getElementsPedagogiques())); } e.getCacheResultats().getResultElpEpr().add(cree); } /** * rcupre les rsultat aux diplomes et etapes dans le cache (en s'indexant sur le rang) * @param rang */ private void recupererCacheResultatVdiVet(int rang, Etudiant e) { //1-on vide les listes existantes if (e.getDiplomes() != null) { e.getDiplomes().clear(); } if (e.getEtapes() != null) { e.getEtapes().clear(); } //2-on rcupre les infos du cache. if (e.getCacheResultats().getResultVdiVet().get(rang).getDiplomes() != null) { e.setDiplomes(new LinkedList<Diplome>(e.getCacheResultats().getResultVdiVet().get(rang).getDiplomes())); } if (e.getCacheResultats().getResultVdiVet().get(rang).getEtapes() != null) { e.setEtapes(new LinkedList<Etape>(e.getCacheResultats().getResultVdiVet().get(rang).getEtapes())); } } /** * rcupre les rsultat aux Elp et Epr dans le cache (en s'indexant sur le rang) * @param rang */ private void recupererCacheDetailNotesEtResultats(int rang, Etudiant e) { //1-on vide la liste existante if (e.getElementsPedagogiques() != null) { e.getElementsPedagogiques().clear(); } //2-on rcupre les infos du cache. if (e.getCacheResultats().getResultElpEpr().get(rang).getElementsPedagogiques() != null) { e.setElementsPedagogiques(new LinkedList<ElementPedagogique>( e.getCacheResultats().getResultElpEpr().get(rang).getElementsPedagogiques())); } } public void changerVueNotesEtResultats() { if (GenericUI.getCurrent().isVueEnseignantNotesEtResultats()) { GenericUI.getCurrent().setVueEnseignantNotesEtResultats(false); } else { GenericUI.getCurrent().setVueEnseignantNotesEtResultats(true); } } public boolean proposerCertificat(Inscription ins, Etudiant etu) { // autoriser ou non la generation de certificats de scolarite. if (!configController.isCertificatScolaritePDF()) { return false; } // autoriser ou non les personnels imprimer les certificats. if (!configController.isCertScolAutorisePersonnel() && userController.isEnseignant()) { return false; } String codAnuIns = ins.getCod_anu().substring(0, 4); // autorise l'dition de certificat de scolarit uniquement pour l'anne en cours. if (!configController.isCertificatScolariteTouteAnnee() && !codAnuIns.equals(getAnneeUnivEnCours(GenericUI.getCurrent()))) { return false; } List<String> listeCertScolTypDiplomeDesactive = configController.getListeCertScolTypDiplomeDesactive(); if (listeCertScolTypDiplomeDesactive != null && !listeCertScolTypDiplomeDesactive.isEmpty()) { // interdit les certificats pour certains types de diplomes DiplomeApogee dip = diplomeService.findDiplome(ins.getCod_dip()); if (dip != null && StringUtils.hasText(dip.getCodTpdEtb())) { if (listeCertScolTypDiplomeDesactive.contains(dip.getCodTpdEtb())) { return false; } } } //interdit l'edition de certificat pour les tudiants si l'inscription n'est pas paye if (!ins.isEstEnRegle() && userController.isEtudiant()) { return false; } //interdit l'dition de certificat pour les tudiants si il reste des pices justificatives non valides if (userController.isEtudiant() && !configController.isCertificatScolaritePiecesNonValidees()) { //Si il reste des PJ non valides if (multipleApogeeService.getNbPJnonValides(etu.getCod_ind(), codAnuIns) > 0) { return false; } } //interdit l'edition de certificat pour les tudiants si l'inscription en cours est une cohabitation List<String> listeCertScolProfilDesactive = configController.getListeCertScolProfilDesactive(); if (listeCertScolProfilDesactive != null && !listeCertScolProfilDesactive.isEmpty()) { // interdit les certificats pour certains types de diplomes String profil = inscriptionService.getProfil(codAnuIns, etu.getCod_ind()); if (listeCertScolProfilDesactive.contains(profil)) { return false; } } //interdit l'dition de certificat pour les tudiants si l'inscription correspond un code CGE dsactiv List<String> listeCertScolCGEDesactive = configController.getListeCertScolCGEDesactive(); if (listeCertScolCGEDesactive != null && !listeCertScolCGEDesactive.isEmpty()) { // interdit les certificats pour certains code CGE String cge = inscriptionService.getCgeFromCodIndIAE(codAnuIns, etu.getCod_ind(), ins.getCod_etp(), ins.getCod_vrs_vet()); if (listeCertScolCGEDesactive.contains(cge)) { return false; } } //interdit l'dition de certificat pour les tudiants si l'inscription correspond un code composante dsactiv List<String> listeCertScolCmpDesactive = configController.getListeCertScolCmpDesactive(); if (listeCertScolCmpDesactive != null && !listeCertScolCmpDesactive.isEmpty()) { // interdit les certificats pour certains code composante String cmp = inscriptionService.getCmpFromCodIndIAE(codAnuIns, etu.getCod_ind(), ins.getCod_etp(), ins.getCod_vrs_vet()); if (listeCertScolCmpDesactive.contains(cmp)) { return false; } } //interdit l'dition de certificat pour les tudiants dont le statut est dans la liste des exclusions List<String> listeCertScolStatutDesactive = configController.getListeCertScolStatutDesactive(); if (listeCertScolStatutDesactive != null && !listeCertScolStatutDesactive.isEmpty()) { // interdit les certificats pour certains types de statut String statut = inscriptionService.getStatut(codAnuIns, etu.getCod_ind()); if (statut != null && listeCertScolStatutDesactive.contains(statut)) { return false; } } return true; } public boolean isAfficherRangElpEpr() { List<ElementPedagogique> lelp = GenericUI.getCurrent().getEtudiant().getElementsPedagogiques(); if (lelp != null && lelp.size() > 0) { List<String> codesAutorises = configController.getListeCodesEtapeAffichageRang(); if (codesAutorises != null && codesAutorises.contains(lelp.get(0).getCode())) { return true; } } return false; } public List<String> updateContact(String telephone, String mail, String codetu) { List<String> retour = new LinkedList<String>(); boolean erreur = false; String message = ""; if (StringUtils.hasText(telephone) && !Pattern.matches("[0-9[. ]]*", telephone)) { message = applicationContext.getMessage("modificationContact.erreur.tel", null, Locale.getDefault()); retour.add(message); erreur = true; } if (StringUtils.hasText(mail) && !Pattern.matches("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", mail)) { message = applicationContext.getMessage("modificationContact.erreur.mail", null, Locale.getDefault()); retour.add(message); erreur = true; } //Si aucune erreur sur les donnes insres if (!erreur) { boolean succes = false; //On insere dans Apoge if (monProxyEtu == null) { monProxyEtu = (EtudiantMetierServiceInterface) WSUtils.getService(WSUtils.ETUDIANT_SERVICE_NAME); } if (monProxyAdministratif == null) { monProxyAdministratif = (AdministratifMetierServiceInterface) WSUtils .getService(WSUtils.ADMINISTRATIF_SERVICE_NAME); } try { //recup de l'ancienne et modif dessus: String[] annees = monProxyAdministratif.recupererAnneesIa(codetu, null); //rcupration de l'anne la plus rcente String annee = "0"; for (int i = 0; i < annees.length; i++) { if (Integer.parseInt(annees[i]) > Integer.parseInt(annee)) { annee = annees[i]; } } CoordonneesDTO2 cdto = monProxyEtu.recupererAdressesEtudiant_v2(codetu, annee, "N"); AdresseMajDTO adanmaj = new AdresseMajDTO(); AdresseMajDTO adfixmaj = new AdresseMajDTO(); adanmaj.setLibAd1(cdto.getAdresseAnnuelle().getLibAd1()); adanmaj.setLibAd2(cdto.getAdresseAnnuelle().getLibAd2()); adanmaj.setLibAd3(cdto.getAdresseAnnuelle().getLibAd3()); adanmaj.setNumTel(cdto.getAdresseAnnuelle().getNumTel()); adanmaj.setCodPays(cdto.getAdresseAnnuelle().getPays().getCodPay()); if (cdto.getAdresseAnnuelle().getCommune() != null) { CommuneMajDTO comanmaj = new CommuneMajDTO(); comanmaj.setCodeInsee(cdto.getAdresseAnnuelle().getCommune().getCodeInsee()); comanmaj.setCodePostal(cdto.getAdresseAnnuelle().getCommune().getCodePostal()); adanmaj.setCommune(comanmaj); } if (StringUtils.hasText(cdto.getAdresseAnnuelle().getLibAde())) { adanmaj.setLibAde(cdto.getAdresseAnnuelle().getLibAde()); } adfixmaj.setLibAd1(cdto.getAdresseFixe().getLibAd1()); adfixmaj.setLibAd2(cdto.getAdresseFixe().getLibAd2()); adfixmaj.setLibAd3(cdto.getAdresseFixe().getLibAd3()); adfixmaj.setNumTel(cdto.getAdresseFixe().getNumTel()); adfixmaj.setCodPays(cdto.getAdresseFixe().getPays().getCodPay()); if (cdto.getAdresseFixe().getCommune() != null) { CommuneMajDTO comfixmaj = new CommuneMajDTO(); comfixmaj.setCodeInsee(cdto.getAdresseFixe().getCommune().getCodeInsee()); comfixmaj.setCodePostal(cdto.getAdresseFixe().getCommune().getCodePostal()); adfixmaj.setCommune(comfixmaj); } if (StringUtils.hasText(cdto.getAdresseFixe().getLibAde())) { adfixmaj.setLibAde(cdto.getAdresseFixe().getLibAde()); } CoordonneesMajDTO cdtomaj = new CoordonneesMajDTO(); cdtomaj.setAnnee(annee); cdtomaj.setTypeHebergement(cdto.getTypeHebergement().getCodTypeHebergement()); cdtomaj.setEmail(mail); cdtomaj.setNumTelPortable(telephone); cdtomaj.setAdresseAnnuelle(adanmaj); cdtomaj.setAdresseFixe(adfixmaj); LOG.debug("==== MAJ ADRESSE ===" + cdto.getAnnee() + " " + cdto.getTypeHebergement().getCodTypeHebergement()); monProxyEtu.mettreAJourAdressesEtudiant(cdtomaj, codetu); succes = true; } catch (WebBaseException ex) { LOG.error( "Probleme avec le WS lors de la maj des adresses de l'etudiant dont codetu est : " + codetu, ex); } catch (Exception ex) { LOG.error( "Probleme avec le WS lors de la maj des adresses de l'etudiant dont codetu est : " + codetu, ex); } if (!succes) { message = applicationContext.getMessage("modificationContact.erreur.ws", null, Locale.getDefault()); retour.add(message); } else { retour.add("OK"); } } return retour; } }