diff --git a/pom.xml b/pom.xml index f87f92dc..2d1846cf 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ fr.univlorraine ecandidat war - 2.3.1-SNAPSHOT + 2.3.2-SNAPSHOT ecandidat @@ -45,8 +45,8 @@ 1.0.2 - 5.1.6.RELEASE - 5.1.5.RELEASE + 5.2.4.RELEASE + 5.2.2.RELEASE 1.1.8 @@ -64,12 +64,12 @@ 5.1.39 - 18.3.0.0 + 19.3.0.0 2.7.2 2.1.1 2.0.1.Final 1.11.22.RELEASE - 6.0.13.Final + 6.1.2.Final 5.3.7.Final 4.2.0 @@ -83,7 +83,7 @@ 1.5.11 1.18.6 2.9.10 - 2.9.10.1 + 2.9.10.3 3.0.1 @@ -165,6 +165,7 @@ configUrlServices.ul.* ul/ VAADIN/gwt-unitCache/ + test-ws.properties @@ -183,8 +184,7 @@ license/ assembly/ repository/ - i18n/*.sample.properties - + i18n/*.sample.properties **/logo.sample.png template/*.sample.docx **/*.scss @@ -201,33 +201,7 @@ - oracle-enable - - - - maven.oracle.com - oracle-maven-repo - https://maven.oracle.com - default - - true - always - - - - - - com.oracle.jdbc - ojdbc8 - ${ojdbc8.version} - - - * - * - - - - + local ${project.name}-${project-distribution.version} @@ -389,6 +363,41 @@ + + + + test-ws + + + + maven-resources-plugin + ${maven-resources-plugin.version} + + + copy-resources-test-ws + + process-resources + + copy-resources + + + ${project.build.outputDirectory} + true + + + src/main/resources/ul/test + delete-opi.sql + false + + + + + + + + + + license @@ -768,11 +777,11 @@ provided - - javax.annotation - javax.annotation-api - 1.3.2 - + + javax.annotation + javax.annotation-api + 1.3.2 + @@ -977,6 +986,18 @@ mysql-connector-java ${mysql.connector.version} + + + com.oracle.ojdbc + ojdbc8 + ${ojdbc8.version} + + + * + * + + + diff --git a/src/main/java/fr/univlorraine/ecandidat/config/SpringConfig.java b/src/main/java/fr/univlorraine/ecandidat/config/SpringConfig.java index 53fe888e..f8f471b9 100644 --- a/src/main/java/fr/univlorraine/ecandidat/config/SpringConfig.java +++ b/src/main/java/fr/univlorraine/ecandidat/config/SpringConfig.java @@ -32,11 +32,13 @@ import fr.univlorraine.ecandidat.Initializer; import fr.univlorraine.ecandidat.utils.ConstanteUtils; +import fr.univlorraine.ecandidat.utils.KeyValue; import fr.univlorraine.ecandidat.utils.MethodUtils; -/** Configuration Spring - * - * @author Adrien Colson */ +/** + * Configuration Spring + * @author Adrien Colson + */ @Configuration @EnableSpringConfigured @ComponentScan(basePackageClasses = Initializer.class) @@ -56,7 +58,7 @@ public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderCon /** @return ResourceBundleMessageSource pour les messages de l'application */ @Bean public ResourceBundleMessageSource messageSource() { - ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource(); + final ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource(); resourceBundleMessageSource.setBasenames("i18n/messages", "i18n/backoffice/backoffice-messages", "i18n/backoffice/nomenclature-messages", "i18n/candidat/candidat-messages"); resourceBundleMessageSource.setFallbackToSystemLocale(false); return resourceBundleMessageSource; @@ -107,12 +109,24 @@ public static DateTimeFormatter formatterDateTimeApoWsPj() { /** @return l'url du WS des PJ Apogée */ @Bean static String urlWsPjApogee() { - return MethodUtils.getUrlWSApogee(ConstanteUtils.WS_APOGEE_PJ_SERVICE); + return MethodUtils.getUrlWSApogee(ConstanteUtils.WS_APOGEE_PJ_URL_SERVICE); + } + + /** @return l'url du WS des PJ Apogée */ + @Bean + static KeyValue headerWsPjApogee() { + return MethodUtils.getHeaderWSApogee(ConstanteUtils.WS_APOGEE_PJ_URL_SERVICE); } /** @return l'url du WS de verification de l'INES */ @Bean static String urlWsCheckInes() { - return MethodUtils.getUrlWSApogee(ConstanteUtils.WS_INES_CHECK_URI_SERVICE); + return MethodUtils.getUrlWSApogee(ConstanteUtils.WS_INES_CHECK_URL_SERVICE); + } + + /** @return l'url du WS des PJ Apogée */ + @Bean + static KeyValue headerWsCheckInes() { + return MethodUtils.getHeaderWSApogee(ConstanteUtils.WS_INES_CHECK_URL_SERVICE); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/AdresseController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/AdresseController.java index fb8d5f28..322558bc 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/AdresseController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/AdresseController.java @@ -26,9 +26,10 @@ import fr.univlorraine.ecandidat.entities.ecandidat.Adresse; import fr.univlorraine.ecandidat.entities.ecandidat.Commission; -/** Gestion de l'entité campagne - * - * @author Kevin Hergalant */ +/** + * Gestion de l'entité campagne + * @author Kevin Hergalant + */ @Component public class AdresseController { /* Injections */ @@ -39,9 +40,11 @@ public class AdresseController { @Resource private transient I18nController i18nController; - /** @param adresse - * @param delimiter - * @return le libelle d'une adresse */ + /** + * @param adresse + * @param delimiter + * @return le libelle d'une adresse + */ public String getLibelleAdresse(final Adresse adresse, final String delimiter) { String libAdr = ""; if (adresse != null) { @@ -81,32 +84,42 @@ public String getLibelleAdresse(final Adresse adresse, final String delimiter) { return libAdr; } - /** @param commission - * @param delimiter - * @return le libelle de l'adresse de la commission */ + /** + * @param commission + * @param delimiter + * @return le libelle de l'adresse de la commission + */ public String getLibelleAdresseCommission(final Commission commission, final String delimiter) { String libAdr = getLibelleAdresse(commission.getAdresse(), delimiter); Boolean addDelimiter = false; if (commission.getTelComm() != null) { addDelimiter = true; - libAdr = libAdr + delimiter + applicationContext.getMessage("candidature.adresse.tel", new Object[] {commission.getTelComm()}, UI.getCurrent().getLocale()) + delimiter; + libAdr = libAdr + delimiter + applicationContext.getMessage("candidature.adresse.tel", new Object[] { commission.getTelComm() }, UI.getCurrent().getLocale()) + delimiter; } if (commission.getMailComm() != null) { if (!addDelimiter) { addDelimiter = true; libAdr = libAdr + delimiter; } - String libMail = "" + commission.getMailComm() + ""; - libAdr = libAdr + applicationContext.getMessage("candidature.adresse.mail", new Object[] {libMail}, UI.getCurrent().getLocale()) + delimiter; + final String libMail = "" + commission.getMailComm() + ""; + libAdr = libAdr + applicationContext.getMessage("candidature.adresse.mail", new Object[] { libMail }, UI.getCurrent().getLocale()) + delimiter; + } + if (commission.getUrlComm() != null) { + if (!addDelimiter) { + addDelimiter = true; + libAdr = libAdr + delimiter; + } + final String libUrl = "" + commission.getUrlComm() + ""; + libAdr = libAdr + applicationContext.getMessage("candidature.adresse.url", new Object[] { libUrl }, UI.getCurrent().getLocale()) + delimiter; } if (commission.getFaxComm() != null) { if (!addDelimiter) { addDelimiter = true; libAdr = libAdr + delimiter; } - libAdr = libAdr + applicationContext.getMessage("candidature.adresse.fax", new Object[] {commission.getFaxComm()}, UI.getCurrent().getLocale()) + delimiter; + libAdr = libAdr + applicationContext.getMessage("candidature.adresse.fax", new Object[] { commission.getFaxComm() }, UI.getCurrent().getLocale()) + delimiter; } - String commentRetour = i18nController.getI18nTraduction(commission.getI18nCommentRetourComm()); + final String commentRetour = i18nController.getI18nTraduction(commission.getI18nCommentRetourComm()); if (commentRetour != null && !commentRetour.equals("")) { if (!addDelimiter) { addDelimiter = true; diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureController.java index a32139d4..8c37cc9a 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureController.java @@ -402,7 +402,7 @@ private Candidature saveCandidature(Candidature candidature, final Boolean isPro if (isProposition) { /* envoi du mail à la commission */ if (candidature.getFormation().getCommission().getTemAlertPropComm()) { - mailController.sendMailByCod(candidature.getFormation().getCommission().getMailComm(), + mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_PROPOSITION, null, candidature, @@ -948,7 +948,7 @@ public void setConfirmationCandidature(final Candidature candidature, final Bool if (!confirm) { /* envoi du mail à la commission */ if (candidature.getFormation().getCommission().getTemAlertDesistComm()) { - mailController.sendMailByCod(candidature.getFormation().getCommission().getMailComm(), + mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_DESISTEMENT, null, candidature, @@ -1029,7 +1029,7 @@ public void cancelCandidature(final Candidature candidature, /* envoi du mail à la commission */ if (candidature.getFormation().getCommission().getTemAlertAnnulComm()) { - mailController.sendMailByCod(candidature.getFormation().getCommission().getMailComm(), + mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_ANNULATION, null, candidature, @@ -1153,7 +1153,7 @@ public InputStream downloadLettre(final Candidature candidature, final String mo libAvis = i18nController.getI18nTraduction(typeDecisionCand.getTypeDecision().getI18nLibTypDec(), locale); // motif pour un avis défavorable if (typeDecisionCand.getMotivationAvis() != null && templateLettre.equals(ConstanteUtils.TEMPLATE_LETTRE_REFUS)) { - motif = i18nController.getI18nTraduction(typeDecisionCand.getMotivationAvis().getI18nLibMotiv()); + motif = i18nController.getI18nTraduction(typeDecisionCand.getMotivationAvis().getI18nLibMotiv(), locale); } // commentaire if (typeDecisionCand.getCommentTypeDecCand() != null && !typeDecisionCand.getCommentTypeDecCand().equals("") diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureGestionController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureGestionController.java index 09cfeb74..f013bca6 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureGestionController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidatureGestionController.java @@ -71,7 +71,7 @@ */ @Component public class CandidatureGestionController { - private Logger logger = LoggerFactory.getLogger(CandidatureGestionController.class); + private final Logger logger = LoggerFactory.getLogger(CandidatureGestionController.class); /* Injections */ @Resource @@ -126,38 +126,38 @@ public class CandidatureGestionController { * @return la liste des type decision LC classé par rang puis par Id */ public List findTypDecLc(final Formation formation, final Campagne campagne) { - Specification spec = new Specification() { + final Specification spec = new Specification() { @Override public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { /* Creation de la subquery pour récupérer le max des id de type decision pour chaque candidature de la formation */ - Subquery subquery = query.subquery(Integer.class); - Root rootSq = subquery.from(TypeDecisionCandidature.class); + final Subquery subquery = query.subquery(Integer.class); + final Root rootSq = subquery.from(TypeDecisionCandidature.class); /* On fait la jointure sur la candidature */ - Join joinCandSq = rootSq.join(TypeDecisionCandidature_.candidature); + final Join joinCandSq = rootSq.join(TypeDecisionCandidature_.candidature); /* Select du max */ subquery.select(cb.max(rootSq.get(TypeDecisionCandidature_.idTypeDecCand))); /* Group by sur idCand */ subquery.groupBy(rootSq.get(TypeDecisionCandidature_.candidature).get(Candidature_.idCand)); /* Ajout des clauses where : formation, campagne et datAnnul null */ - Predicate predicateFormation = cb.equal(joinCandSq.get(Candidature_.formation), formation); - Predicate predicateCampagne = + final Predicate predicateFormation = cb.equal(joinCandSq.get(Candidature_.formation), formation); + final Predicate predicateCampagne = cb.equal(joinCandSq.join(Candidature_.candidat).join(Candidat_.compteMinima).get(CompteMinima_.campagne), campagne); - Predicate predicateDtAnnul = cb.isNull(joinCandSq.get(Candidature_.datAnnulCand)); + final Predicate predicateDtAnnul = cb.isNull(joinCandSq.get(Candidature_.datAnnulCand)); /* Finalisation de la subquery */ subquery.where(predicateFormation, predicateCampagne, predicateDtAnnul); /* Selection des typeDecisionCandidature, creation des clauses where : * L'avis doit etre validé, avec un rang non null, un avis LC et contenu dans la subquery */ - Predicate predicateValid = cb.equal(root.get(TypeDecisionCandidature_.temValidTypeDecCand), true); - Predicate predicateRang = cb.isNotNull(root.get(TypeDecisionCandidature_.listCompRangTypDecCand)); - Predicate predicateAvis = + final Predicate predicateValid = cb.equal(root.get(TypeDecisionCandidature_.temValidTypeDecCand), true); + final Predicate predicateRang = cb.isNotNull(root.get(TypeDecisionCandidature_.listCompRangTypDecCand)); + final Predicate predicateAvis = cb.equal(root.join(TypeDecisionCandidature_.typeDecision).get(TypeDecision_.typeAvis), tableRefController.getTypeAvisListComp()); - Predicate predicateSqMaxIds = cb.in(root.get(TypeDecisionCandidature_.idTypeDecCand)).value(subquery); + final Predicate predicateSqMaxIds = cb.in(root.get(TypeDecisionCandidature_.idTypeDecCand)).value(subquery); /* Recherche avec ces clauses */ return cb.and(predicateValid, predicateRang, predicateAvis, predicateSqMaxIds); @@ -165,8 +165,8 @@ public Predicate toPredicate(final Root root, final Cri }; /* On sort sur le rang en premier puis si même rang, sur l'id --> l'id le plus bas sera classé premier */ - Order orderRang = new Order(Direction.ASC, TypeDecisionCandidature_.listCompRangTypDecCand.getName()); - Order orderId = new Order(Direction.ASC, TypeDecisionCandidature_.idTypeDecCand.getName()); + final Order orderRang = new Order(Direction.ASC, TypeDecisionCandidature_.listCompRangTypDecCand.getName()); + final Order orderId = new Order(Direction.ASC, TypeDecisionCandidature_.idTypeDecCand.getName()); return typeDecisionCandidatureRepository.findAll(spec, new Sort(orderRang, orderId)); } @@ -175,16 +175,16 @@ public Predicate toPredicate(final Root root, final Cri * @param batchHisto */ public void calculRangLcAllFormation(final BatchHisto batchHisto) { - Campagne camp = campagneController.getCampagneActive(); + final Campagne camp = campagneController.getCampagneActive(); if (camp == null) { return; } - List listForm = formationRepository.findByTesFormAndTemListCompForm(true, true); + final List listForm = formationRepository.findByTesFormAndTemListCompForm(true, true); batchController.addDescription(batchHisto, "Lancement batch de recalcul des rangs LC pour " + listForm.size() + " formations"); - int[] cpt = { 0 }; + final int[] cpt = { 0 }; listForm.forEach(formation -> { - List listeTdc = findTypDecLc(formation, camp); - int size = listeTdc.size(); + final List listeTdc = findTypDecLc(formation, camp); + final int size = listeTdc.size(); cpt[0] = cpt[0] + size; batchController.addDescription(batchHisto, "Batch calcul rang : formation '" + formation.getCodForm() + "', " + size + " décisions à recalculer"); calculRangReel(listeTdc); @@ -199,12 +199,12 @@ public void calculRangLcAllFormation(final BatchHisto batchHisto) { * @return la liste des TypeDecisionCandidature */ public List calculRangReelListForm(final List liste) { - Campagne camp = campagneController.getCampagneActive(); - List listeTypDecRangReel = new ArrayList<>(); + final Campagne camp = campagneController.getCampagneActive(); + final List listeTypDecRangReel = new ArrayList<>(); if (camp == null) { return listeTypDecRangReel; } - for (Formation formation : liste) { + for (final Formation formation : liste) { if (formation == null || !formation.getTemListCompForm()) { continue; } @@ -219,12 +219,12 @@ public List calculRangReelListForm(final List calculRangReel(final List liste) { - List listeTypDecRangReel = new ArrayList<>(); + final List listeTypDecRangReel = new ArrayList<>(); int i = 1; - for (TypeDecisionCandidature td : liste) { + for (final TypeDecisionCandidature td : liste) { if (td.getListCompRangReelTypDecCand() == null || !td.getListCompRangReelTypDecCand().equals(i)) { td.setListCompRangReelTypDecCand(i); - TypeDecisionCandidature tdSave = typeDecisionCandidatureRepository.save(td); + final TypeDecisionCandidature tdSave = typeDecisionCandidatureRepository.save(td); listeTypDecRangReel.add(tdSave); Candidature candidature = td.getCandidature(); candidature.setUserModCand(ConstanteUtils.AUTO_LISTE_COMP); @@ -243,16 +243,16 @@ public List calculRangReel(final List listTypDecLc = findTypDecLc(formation, camp); - Optional optTypDec = listTypDecLc.stream().findFirst(); + final List listTypDecLc = findTypDecLc(formation, camp); + final Optional optTypDec = listTypDecLc.stream().findFirst(); if (optTypDec.isPresent()) { - TypeDecisionCandidature td = optTypDec.get(); + final TypeDecisionCandidature td = optTypDec.get(); Candidature candidature = td.getCandidature(); logger.debug("Traitement liste comp. : " + candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin()); @@ -265,7 +265,7 @@ public void candidatFirstCandidatureListComp(Formation formation) { candidature = candidatureController.loadCandidature(candidature.getIdCand()); /* On affecte une nouvelle date de confirmation si besoin */ - LocalDate newDateConfirm = candidatureController.getDateConfirmCandidat(formation.getDatConfirmListCompForm(), + final LocalDate newDateConfirm = candidatureController.getDateConfirmCandidat(formation.getDatConfirmListCompForm(), formation.getDelaiConfirmListCompForm(), null, candidatureController.getLastTypeDecisionCandidature(candidature)); @@ -282,14 +282,14 @@ public void candidatFirstCandidatureListComp(Formation formation) { candidature.setLastTypeDecision(candidatureController.getLastTypeDecisionCandidature(candidature)); PdfAttachement attachement = null; - InputStream is = + final InputStream is = candidatureController.downloadLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, candidature.getCandidat().getLangue().getCodLangue(), false); if (is != null) { try { attachement = new PdfAttachement(is, candidatureController .getNomFichierLettre(candidature, ConstanteUtils.TYP_LETTRE_MAIL, candidature.getCandidat().getLangue().getCodLangue())); - } catch (Exception e) { + } catch (final Exception e) { attachement = null; } } @@ -301,7 +301,7 @@ public void candidatFirstCandidatureListComp(Formation formation) { attachement); /* envoi du mail à la commission */ if (candidature.getFormation().getCommission().getTemAlertListePrincComm()) { - mailController.sendMailByCod(candidature.getFormation().getCommission().getMailComm(), + mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_LISTE_PRINC, null, candidature, @@ -320,16 +320,16 @@ public void candidatFirstCandidatureListComp(Formation formation) { /** Lance le batch de destruction des dossiers */ public void launchBatchDestructDossier(final BatchHisto batchHisto) throws FileException { - Boolean deleteFileManualy = enableDeleteFileManuallyBatchDestruct != null && enableDeleteFileManuallyBatchDestruct; - Boolean deleteRootManualy = enableDeleteRootFolderManuallyBatchDestruct != null && enableDeleteRootFolderManuallyBatchDestruct; - List listeCamp = campagneController.getCampagnes() + final Boolean deleteFileManualy = enableDeleteFileManuallyBatchDestruct != null && enableDeleteFileManuallyBatchDestruct; + final Boolean deleteRootManualy = enableDeleteRootFolderManuallyBatchDestruct != null && enableDeleteRootFolderManuallyBatchDestruct; + final List listeCamp = campagneController.getCampagnes() .stream() .filter(e -> (e.getDatDestructEffecCamp() == null && e.getDatArchivCamp() != null)) .collect(Collectors.toList()); batchController.addDescription(batchHisto, "Lancement batch de destruction"); batchController.addDescription(batchHisto, "Batch de destruction, option enableDeleteFileManuallyBatchDestruct=" + deleteFileManualy); batchController.addDescription(batchHisto, "Batch de destruction, option enableDeleteRootFolderManuallyBatchDestruct=" + deleteRootManualy); - for (Campagne campagne : listeCamp) { + for (final Campagne campagne : listeCamp) { if (campagneController.getDateDestructionDossier(campagne).isBefore(LocalDateTime.now())) { batchController.addDescription(batchHisto, "Batch de destruction, destruction dossiers campagne : " + campagne.getCodCamp() @@ -338,10 +338,10 @@ public void launchBatchDestructDossier(final BatchHisto batchHisto) throws FileE + " comptes à supprimer"); Integer i = 0; Integer cpt = 0; - for (CompteMinima cptMin : campagne.getCompteMinimas()) { + for (final CompteMinima cptMin : campagne.getCompteMinimas()) { if (cptMin.getCandidat() != null) { - for (Candidature candidature : cptMin.getCandidat().getCandidatures()) { - for (PjCand pjCand : candidature.getPjCands()) { + for (final Candidature candidature : cptMin.getCandidat().getCandidatures()) { + for (final PjCand pjCand : candidature.getPjCands()) { if (deleteFileManualy) { candidaturePieceController.removeFileToPjManually(pjCand); } else { @@ -366,9 +366,9 @@ public void launchBatchDestructDossier(final BatchHisto batchHisto) throws FileE batchController.addDescription(batchHisto, "Batch de destruction, destruction dossier root campagne : " + campagne.getCodCamp()); fileController.deleteCampagneFolder(campagne.getCodCamp()); } + campagneController.saveDateDestructionCampagne(campagne); /* Enregistre la date de suppression */ - campagneController.saveDateDestructionCampagne(campagne); batchController.addDescription(batchHisto, "Batch de destruction, fin destruction campagne : " + campagne.getCodCamp() + ", " + cpt + " comptes supprimés"); } @@ -382,29 +382,29 @@ public void launchBatchDestructDossier(final BatchHisto batchHisto) throws FileE * @return la liste des type decision favorable non confirmée */ public List findTypDecFavoNotAccept(final Campagne campagne, final Boolean isCandidatureRelance) { - Specification spec = new Specification() { + final Specification spec = new Specification() { @Override public Predicate toPredicate(final Root root, final CriteriaQuery query, final CriteriaBuilder cb) { /* Creation de la subquery pour récupérer le max des id de type decision pour chaque candidature de la formation */ - Subquery subquery = query.subquery(Integer.class); - Root rootSq = subquery.from(TypeDecisionCandidature.class); + final Subquery subquery = query.subquery(Integer.class); + final Root rootSq = subquery.from(TypeDecisionCandidature.class); /* On fait la jointure sur la candidature */ - Join joinCandSq = rootSq.join(TypeDecisionCandidature_.candidature); + final Join joinCandSq = rootSq.join(TypeDecisionCandidature_.candidature); /* Select du max */ subquery.select(cb.max(rootSq.get(TypeDecisionCandidature_.idTypeDecCand))); /* Group by sur idCand */ subquery.groupBy(rootSq.get(TypeDecisionCandidature_.candidature).get(Candidature_.idCand)); /* Ajout des clauses where : campagne , datAnnul null, temAccept null */ - Predicate predicateCampagne = cb.equal(joinCandSq.get(Candidature_.candidat).get(Candidat_.compteMinima).get(CompteMinima_.campagne), campagne); - Predicate predicateDtAnnul = cb.isNull(joinCandSq.get(Candidature_.datAnnulCand)); - Predicate predicateNotAccept = cb.isNull(joinCandSq.get(Candidature_.temAcceptCand)); + final Predicate predicateCampagne = cb.equal(joinCandSq.get(Candidature_.candidat).get(Candidat_.compteMinima).get(CompteMinima_.campagne), campagne); + final Predicate predicateDtAnnul = cb.isNull(joinCandSq.get(Candidature_.datAnnulCand)); + final Predicate predicateNotAccept = cb.isNull(joinCandSq.get(Candidature_.temAcceptCand)); /* Si isCandidatureRelance à false, on ne prend pas les relancés, sinon on prend tout le monde */ if (!isCandidatureRelance) { - Predicate predicateIsNotRelance = cb.equal(joinCandSq.get(Candidature_.temRelanceCand), false); + final Predicate predicateIsNotRelance = cb.equal(joinCandSq.get(Candidature_.temRelanceCand), false); /* Finalisation de la subquery */ subquery.where(predicateCampagne, predicateDtAnnul, predicateNotAccept, predicateIsNotRelance); } else { @@ -414,10 +414,10 @@ public Predicate toPredicate(final Root root, final Cri /* Selection des typeDecisionCandidature, creation des clauses where : * L'avis doit etre validé, un avis Favo et contenu dans la subquery */ - Predicate predicateValid = cb.equal(root.get(TypeDecisionCandidature_.temValidTypeDecCand), true); - Predicate predicateAvis = + final Predicate predicateValid = cb.equal(root.get(TypeDecisionCandidature_.temValidTypeDecCand), true); + final Predicate predicateAvis = cb.equal(root.get(TypeDecisionCandidature_.typeDecision).get(TypeDecision_.typeAvis), tableRefController.getTypeAvisFavorable()); - Predicate predicateSqMaxIds = cb.in(root.get(TypeDecisionCandidature_.idTypeDecCand)).value(subquery); + final Predicate predicateSqMaxIds = cb.in(root.get(TypeDecisionCandidature_.idTypeDecCand)).value(subquery); /* Recherche avec ces clauses */ return cb.and(predicateValid, predicateAvis, predicateSqMaxIds); @@ -433,20 +433,20 @@ public Predicate toPredicate(final Root root, final Cri */ public void desistAutoCandidature(final BatchHisto batchHisto) { logger.debug("Lancement batch BATCH_DESIST_AUTO"); - Campagne campagne = campagneController.getCampagneActive(); + final Campagne campagne = campagneController.getCampagneActive(); if (campagne == null) { return; } /* Recuperation des candidatures a traiter */ // List listeTyDec = typeDecisionCandidatureRepository.findListFavoNotConfirmToDesist(campagne, true, tableRefController.getTypeAvisFavorable()); - List listeTyDec = findTypDecFavoNotAccept(campagne, true); + final List listeTyDec = findTypDecFavoNotAccept(campagne, true); batchController.addDescription(batchHisto, "Lancement batch BATCH_DESIST_AUTO, " + listeTyDec.size() + " candidatures à analyser"); Integer i = 0; Integer cpt = 0; - for (TypeDecisionCandidature td : listeTyDec) { - Candidature candidature = td.getCandidature(); - LocalDate dateConfirm = candidatureController.getDateConfirmCandidat(candidature); + for (final TypeDecisionCandidature td : listeTyDec) { + final Candidature candidature = td.getCandidature(); + final LocalDate dateConfirm = candidatureController.getDateConfirmCandidat(candidature); /* Vérification date non null et date avant aujourd'hui */ if (dateConfirm == null || dateConfirm.equals(LocalDate.now()) || dateConfirm.isAfter(LocalDate.now())) { continue; @@ -475,11 +475,11 @@ public void desistAutoCandidature(final BatchHisto batchHisto) { * @param batchHisto */ public void relanceFavorableNotConfirm(final BatchHisto batchHisto) { - Campagne campagne = campagneController.getCampagneActive(); + final Campagne campagne = campagneController.getCampagneActive(); if (campagne == null) { return; } - LocalDate dateConfirmCalc = LocalDate.now().plusDays(parametreController.getNbJourRelanceFavo()); + final LocalDate dateConfirmCalc = LocalDate.now().plusDays(parametreController.getNbJourRelanceFavo()); if (dateConfirmCalc == null) { return; } @@ -492,14 +492,14 @@ public void relanceFavorableNotConfirm(final BatchHisto batchHisto) { * - leur dernier avis est validé * - leur dernier avis est favorable **/ // List listeTyDec = typeDecisionCandidatureRepository.findListFavoNotConfirmToRelance(campagne, true, false, tableRefController.getTypeAvisFavorable()); - List listeTyDec = findTypDecFavoNotAccept(campagne, false); + final List listeTyDec = findTypDecFavoNotAccept(campagne, false); batchController.addDescription(batchHisto, "Batch de relance, chargement des décisions, ok"); batchController.addDescription(batchHisto, "Batch de relance, " + listeTyDec.size() + " candidatures à analyser"); Integer i = 0; Integer cpt = 0; - for (TypeDecisionCandidature td : listeTyDec) { - Candidature candidature = td.getCandidature(); - LocalDate dateConfirmCandidat = candidatureController.getDateConfirmCandidat(candidature); + for (final TypeDecisionCandidature td : listeTyDec) { + final Candidature candidature = td.getCandidature(); + final LocalDate dateConfirmCandidat = candidatureController.getDateConfirmCandidat(candidature); /* Vérification date non null et date égale à date calculée */ if (dateConfirmCandidat == null || !dateConfirmCandidat.equals(dateConfirmCalc)) { diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidaturePieceController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidaturePieceController.java index 6ef7e08a..65578c5e 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/CandidaturePieceController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/CandidaturePieceController.java @@ -78,7 +78,7 @@ */ @Component public class CandidaturePieceController { - private Logger logger = LoggerFactory.getLogger(CandidaturePieceController.class); + private final Logger logger = LoggerFactory.getLogger(CandidaturePieceController.class); /* Injections */ @Resource private transient ApplicationContext applicationContext; @@ -127,13 +127,13 @@ public class CandidaturePieceController { * @return la liste des pj d'une candidature */ public List getPjCandidature(final Candidature candidature) { - List liste = new ArrayList<>(); - TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); - TypeStatutPiece statutValide = tableRefController.getTypeStatutPieceValide(); - Boolean isDemat = candidature.getFormation().getTemDematForm(); + final List liste = new ArrayList<>(); + final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutValide = tableRefController.getTypeStatutPieceValide(); + final Boolean isDemat = candidature.getFormation().getTemDematForm(); int i = 1; - for (PieceJustif e : pieceJustifController.getPjForCandidature(candidature, true)) { + for (final PieceJustif e : pieceJustifController.getPjForCandidature(candidature, true)) { liste.add(getPjPresentation(e, candidature, statutAtt, statutValide, i, isDemat)); i++; } @@ -155,8 +155,8 @@ private PjPresentation getPjPresentation(final PieceJustif pj, final TypeStatutPiece statutValide, final Integer order, final Boolean isDemat) { - String libPj = i18nController.getI18nTraduction(pj.getI18nLibPj()); - PjCand pjCand = getPjCandFromList(pj, candidature, isDemat); + final String libPj = i18nController.getI18nTraduction(pj.getI18nLibPj()); + final PjCand pjCand = getPjCandFromList(pj, candidature, isDemat); String libStatut = null; String codStatut = null; @@ -198,7 +198,7 @@ private PjPresentation getPjPresentation(final PieceJustif pj, idCandidature = candidature.getIdCand(); } } - Boolean commun = pj.getTemCommunPj() && !pj.getTemUnicitePj(); + final Boolean commun = pj.getTemCommunPj() && !pj.getTemUnicitePj(); return new PjPresentation(pj, libPj, fichier, @@ -221,7 +221,7 @@ private PjPresentation getPjPresentation(final PieceJustif pj, * @return Renvoi un fichier si il existe */ public PjCand getPjCandFromList(final PieceJustif piece, final Candidature candidature, final Boolean isDemat) { - Optional pjCandOpt = candidature.getPjCands().stream().filter(e -> e.getId().getIdPj().equals(piece.getIdPj())).findAny(); + final Optional pjCandOpt = candidature.getPjCands().stream().filter(e -> e.getId().getIdPj().equals(piece.getIdPj())).findAny(); if (pjCandOpt.isPresent()) { return pjCandOpt.get(); } @@ -231,7 +231,7 @@ public PjCand getPjCandFromList(final PieceJustif piece, final Candidature candi // si on ne trouve pas et que la pièce est commune, on va chercher dans les // autres candidatures if (piece.getTemCommunPj() && !piece.getTemUnicitePj()) { - List liste = + final List liste = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc(piece.getIdPj(), candidature.getCandidat().getIdCandidat(), true); @@ -247,22 +247,23 @@ public PjCand getPjCandFromList(final PieceJustif piece, final Candidature candi * @return la liste des formulaires d'une candidature */ public List getFormulaireCandidature(final Candidature candidature) { - String numDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); - List liste = new ArrayList<>(); - TypeStatutPiece statutAT = tableRefController.getTypeStatutPieceAttente(); - TypeStatutPiece statutNC = tableRefController.getTypeStatutPieceNonConcerne(); - TypeStatutPiece statutTR = tableRefController.getTypeStatutPieceTransmis(); + final String numDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); + final List liste = new ArrayList<>(); + final TypeStatutPiece statutAT = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutNC = tableRefController.getTypeStatutPieceNonConcerne(); + final TypeStatutPiece statutTR = tableRefController.getTypeStatutPieceTransmis(); - List listeFormulaireCand = candidature.getFormulaireCands(); - List listeFormulaireCandidat = candidature.getCandidat().getFormulaireCandidats(); + final List listeFormulaireCand = candidature.getFormulaireCands(); + final List listeFormulaireCandidat = candidature.getCandidat().getFormulaireCandidats(); formulaireController.getFormulaireForCandidature(candidature).forEach(e -> { - String libForm = i18nController.getI18nTraduction(e.getI18nLibFormulaire()); + final String libForm = i18nController.getI18nTraduction(e.getI18nLibFormulaire()); String urlForm = i18nController.getI18nTraduction(e.getI18nUrlFormulaire()); /* Possibilité d'ajout du numdossier dans l'url sous la forme ${numDossier} */ if (urlForm != null) { urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER, numDossier); + urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER_OLD, numDossier); } String libStatut = null; @@ -270,7 +271,7 @@ public List getFormulaireCandidature(final Candidature c String reponses = null; /* On recherche d'abord les réponses */ - FormulaireCandidat formulaireCandidat = getFormulaireCandidatFromList(e, listeFormulaireCandidat); + final FormulaireCandidat formulaireCandidat = getFormulaireCandidatFromList(e, listeFormulaireCandidat); if (formulaireCandidat != null) { codStatut = statutTR.getCodTypStatutPiece(); libStatut = i18nController.getI18nTraduction(statutTR.getI18nLibTypStatutPiece()); @@ -278,7 +279,7 @@ public List getFormulaireCandidature(final Candidature c } else { /* Si pas de réponse on recherche une ligne dans formulaireCand pour vérifier * qu'il est concerné */ - FormulaireCand formulaireCand = getFormulaireCandFromList(e, listeFormulaireCand); + final FormulaireCand formulaireCand = getFormulaireCandFromList(e, listeFormulaireCand); if (formulaireCand != null) { codStatut = statutNC.getCodTypStatutPiece(); libStatut = i18nController.getI18nTraduction(statutNC.getI18nLibTypStatutPiece()); @@ -300,7 +301,7 @@ public List getFormulaireCandidature(final Candidature c * @return recherche une reponse non concerné a un formulaire */ private FormulaireCand getFormulaireCandFromList(final Formulaire formulaire, final List listFormulaireCand) { - Optional formulaireCandOpt = + final Optional formulaireCandOpt = listFormulaireCand.stream().filter(e -> e.getId().getIdFormulaire().equals(formulaire.getIdFormulaire())).findAny(); if (formulaireCandOpt.isPresent()) { return formulaireCandOpt.get(); @@ -315,7 +316,7 @@ private FormulaireCand getFormulaireCandFromList(final Formulaire formulaire, fi * @return recherche une reponse a formulaire */ private FormulaireCandidat getFormulaireCandidatFromList(final Formulaire formulaire, final List listFormulaireCandidat) { - Optional formulaireCandOpt = listFormulaireCandidat.stream() + final Optional formulaireCandOpt = listFormulaireCandidat.stream() .filter(e -> e.getId().getIdFormulaireLimesurvey().equals(formulaire.getIdFormulaireLimesurvey())) .sorted((e1, e2) -> (e2.getDatReponseFormulaireCandidat().compareTo(e1.getDatReponseFormulaireCandidat()))) .findFirst(); @@ -331,21 +332,22 @@ private FormulaireCandidat getFormulaireCandidatFromList(final Formulaire formul * @param candidature */ public void relanceFormulaires(final List listeToRelance, final Candidature candidature) { - ConfirmWindow confirmWindow = new ConfirmWindow( + final ConfirmWindow confirmWindow = new ConfirmWindow( applicationContext.getMessage("formulaireComp.relance.window.msg", new String[] { String.valueOf(listeToRelance.size()) }, UI.getCurrent().getLocale()), applicationContext.getMessage("formulaireComp.relance.window", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(event -> { - String codLangue = candidature.getCandidat().getLangue().getCodLangue(); - String numDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); + final String codLangue = candidature.getCandidat().getLangue().getCodLangue(); + final String numDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); - FormulaireMailBean mailBean = new FormulaireMailBean(); + final FormulaireMailBean mailBean = new FormulaireMailBean(); listeToRelance.forEach(e -> { - String libForm = i18nController.getI18nTraduction(e.getFormulaire().getI18nLibFormulaire(), codLangue); + final String libForm = i18nController.getI18nTraduction(e.getFormulaire().getI18nLibFormulaire(), codLangue); String urlForm = i18nController.getI18nTraduction(e.getFormulaire().getI18nUrlFormulaire(), codLangue); /* Possibilité d'ajout du numdossier dans l'url sous la forme ${numDossier} */ if (urlForm != null) { urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER, numDossier); + urlForm = urlForm.replaceAll(ConstanteUtils.VAR_REGEX_FORM_NUM_DOSSIER_OLD, numDossier); } mailBean.addFormulaire(libForm, urlForm); }); @@ -384,7 +386,7 @@ public Boolean isOkToTransmettreCandidatureStatutDossier(final String codStatut, * dossier */ public Boolean isOkToTransmettreCandidatureStatutPiece(final List listePj, final Boolean notification) { - for (PjPresentation pj : listePj) { + for (final PjPresentation pj : listePj) { if (pj.getCodStatut() == null) { if (notification) { Notification @@ -471,7 +473,7 @@ public void transmettreCandidatureAfterDepot(final Candidature candidature, * @param message */ private void transmettreCandidature(final Candidature candidature, final CandidatureListener listener, final String message) { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(message, applicationContext.getMessage("candidature.validPJ.window.confirmTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(event -> { candidature.setTypeStatut(tableRefController.getTypeStatutReceptionne()); @@ -479,7 +481,7 @@ private void transmettreCandidature(final Candidature candidature, final Candida candidature.setDatModTypStatutCand(LocalDateTime.now()); candidature.setDatTransDossierCand(LocalDateTime.now()); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); mailController.sendMailByCod(candidature.getCandidat().getCompteMinima().getMailPersoCptMin(), NomenclatureUtils.MAIL_STATUT_RE, @@ -488,7 +490,7 @@ private void transmettreCandidature(final Candidature candidature, final Candida candidature.getCandidat().getLangue().getCodLangue()); if (candidature.getFormation().getCommission().getTemAlertTransComm()) { - mailController.sendMailByCod(candidature.getFormation().getCommission().getMailComm(), + mailController.sendMailByCod(candidature.getFormation().getCommission().getMailAlertComm(), NomenclatureUtils.MAIL_COMMISSION_ALERT_TRANSMISSION, null, candidature, @@ -557,14 +559,14 @@ public Boolean isPjModified(final PjPresentation pieceJustif, final Candidature Boolean needToReload = false; if (pieceJustif.getPJCommune()) { - List listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc( + final List listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc( pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true); PjCand pjCandFind = null; if (listePjCand != null && listePjCand.size() > 0) { // on cherche d'abord en priorité si la pièce est présente sur la candidature - Optional pjCandOpt = + final Optional pjCandOpt = listePjCand.stream().filter(e -> e.getCandidature().getIdCand().equals(pieceJustif.getIdCandidature())).findFirst(); if (pjCandOpt.isPresent()) { pjCandFind = pjCandOpt.get(); @@ -608,8 +610,8 @@ else if (!pjCandFind.getDatModPjCand().equals(pieceJustif.getDatModification())) } else { // si pièce non commune, présente dans la fenetre mais absente en base if (pieceJustif.getDatModification() != null) { - PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); - PjCand pjCand = pjCandRepository.findOne(pk); + final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); + final PjCand pjCand = pjCandRepository.findOne(pk); if (pjCand == null) { logger.debug("Cas no4, pièce non commune mais supprimée"); @@ -624,7 +626,7 @@ else if (!pjCandFind.getDatModPjCand().equals(pieceJustif.getDatModification())) if (showNotif) { Notification.show(applicationContext.getMessage("pj.modified", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); } - Candidature candidatureLoad = candidatureRepository.findOne(candidature.getIdCand()); + final Candidature candidatureLoad = candidatureRepository.findOne(candidature.getIdCand()); listener.reloadAllPiece(getPjCandidature(candidatureLoad), candidatureLoad); return true; } @@ -651,15 +653,15 @@ public void addFileToPieceJustificative(final PjPresentation pieceJustif, final return; } - String user = userController.getCurrentNoDossierCptMinOrLogin(); + final String user = userController.getCurrentNoDossierCptMinOrLogin(); - String cod = ConstanteUtils.TYPE_FICHIER_PJ_CAND + "_" + final String cod = ConstanteUtils.TYPE_FICHIER_PJ_CAND + "_" + candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin() + "_" + candidature.getIdCand() + "_" + pieceJustif.getPieceJustif().getIdPj(); - UploadWindow uw = new UploadWindow(cod, ConstanteUtils.TYPE_FICHIER_CANDIDAT, candidature, pieceJustif.getPJCommune(), false); + final UploadWindow uw = new UploadWindow(cod, ConstanteUtils.TYPE_FICHIER_CANDIDAT, candidature, pieceJustif.getPJCommune(), false); uw.addUploadWindowListener(file -> { if (file == null) { return; @@ -669,21 +671,21 @@ public void addFileToPieceJustificative(final PjPresentation pieceJustif, final return; } - PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), pieceJustif.getIdCandidature()); + final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), pieceJustif.getIdCandidature()); PjCand pjCand = pjCandRepository.findOne(pk); if (pjCand == null) { pjCand = new PjCand(pk, user, candidature, pieceJustif.getPieceJustif()); } - Fichier fichier = fileController.createFile(file, user, ConstanteUtils.TYPE_FICHIER_CANDIDAT); + final Fichier fichier = fileController.createFile(file, user, ConstanteUtils.TYPE_FICHIER_CANDIDAT); if (isPjModified(pieceJustif, candidature, true, listener)) { FichierFiabilisation fichierFiabilisation = new FichierFiabilisation(fichier); fichierFiabilisation = fichierFiabilisationRepository.save(fichierFiabilisation); try { fileController.deleteFichier(fichier); fichierFiabilisationRepository.delete(fichierFiabilisation); - } catch (FileException e) { + } catch (final FileException e) { } uw.close(); return; @@ -693,13 +695,13 @@ public void addFileToPieceJustificative(final PjPresentation pieceJustif, final pjCand.setUserModPjCand(user); pjCand.setFichier(fichier); - TypeStatutPiece statutTr = tableRefController.getTypeStatutPieceTransmis(); + final TypeStatutPiece statutTr = tableRefController.getTypeStatutPieceTransmis(); pjCand.setTypeStatutPiece(statutTr); pjCandRepository.save(pjCand); // obligé de recharger l'objet car le datetime est arrondi :( - PjCand pjCandSave = pjCandRepository.findOne(pk); + final PjCand pjCandSave = pjCandRepository.findOne(pk); pieceJustif.setFilePj(fichier); pieceJustif.setCodStatut(statutTr.getCodTypStatutPiece()); @@ -709,7 +711,7 @@ public void addFileToPieceJustificative(final PjPresentation pieceJustif, final candidature.setUserModCand(user); candidature.updatePjCand(pjCandSave); candidature.setDatModCand(LocalDateTime.now()); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjModified(pieceJustif, candidatureSave); @@ -738,9 +740,9 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) { return; } - String user = userController.getCurrentUserLogin(); + final String user = userController.getCurrentUserLogin(); if (isConcerned) { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("pj.window.concerne", new Object[] { pieceJustif.getLibPj() }, UI.getCurrent().getLocale()), applicationContext.getMessage("pj.window.conditionnel.title", null, UI.getCurrent().getLocale())); @@ -756,14 +758,14 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, PjCand pjCand = null; if (pieceJustif.getPJCommune()) { - List listePjCand = + final List listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc( pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true); if (listePjCand != null && listePjCand.size() > 0) { // on cherche d'abord en priorité si la pièce est présente sur la candidature - Optional pjCandOpt = + final Optional pjCandOpt = listePjCand.stream().filter(e -> e.getCandidature().getIdCand().equals(pieceJustif.getIdCandidature())).findFirst(); if (pjCandOpt.isPresent()) { pjCand = pjCandOpt.get(); @@ -772,7 +774,7 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, } } } else { - PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); + final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); pjCand = pjCandRepository.findOne(pk); } @@ -782,18 +784,18 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, candidature.setDatModCand(LocalDateTime.now()); candidature.removePjCand(pjCand); - TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); pieceJustif.setCodStatut(statutAtt.getCodTypStatutPiece()); pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutAtt.getI18nLibTypStatutPiece())); pieceJustif.setDatModification(null); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjModified(pieceJustif, candidatureSave); } }); UI.getCurrent().addWindow(confirmWindow); } else { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("pj.window.nonConcerne", new Object[] { pieceJustif.getLibPj() }, UI.getCurrent().getLocale()), applicationContext.getMessage("pj.window.conditionnel.title", null, UI.getCurrent().getLocale())); @@ -807,16 +809,16 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, } PjCand pjCand = null; - PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); + final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), candidature.getIdCand()); if (pieceJustif.getPJCommune()) { - List listePjCand = + final List listePjCand = pjCandRepository.findByIdIdPjAndCandidatureCandidatIdCandidatAndCandidatureFormationTemDematFormOrderByDatModPjCandDesc( pieceJustif.getPieceJustif().getIdPj(), candidature.getCandidat().getIdCandidat(), true); if (listePjCand != null && listePjCand.size() > 0) { // on cherche d'abord en priorité si la pièce est présente sur la candidature - Optional pjCandOpt = + final Optional pjCandOpt = listePjCand.stream().filter(e -> e.getCandidature().getIdCand().equals(pieceJustif.getIdCandidature())).findFirst(); if (pjCandOpt.isPresent()) { pjCand = pjCandOpt.get(); @@ -835,7 +837,7 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, pjCand.setUserModPjCand(user); pjCand.setFichier(null); - TypeStatutPiece statutNotConcern = tableRefController.getTypeStatutPieceNonConcerne(); + final TypeStatutPiece statutNotConcern = tableRefController.getTypeStatutPieceNonConcerne(); pieceJustif.setCodStatut(statutNotConcern.getCodTypStatutPiece()); pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutNotConcern.getI18nLibTypStatutPiece())); @@ -843,7 +845,7 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, pjCand = pjCandRepository.saveAndFlush(pjCand); // obligé de recharger l'objet car le datetime est arrondi :( - PjCand pjCandSave = pjCandRepository.findOne(pk); + final PjCand pjCandSave = pjCandRepository.findOne(pk); pieceJustif.setFilePj(null); pieceJustif.setCodStatut(statutNotConcern.getCodTypStatutPiece()); @@ -854,7 +856,7 @@ public void setIsConcernedPieceJustificative(final PjPresentation pieceJustif, candidature.setUserModCand(user); candidature.updatePjCand(pjCandSave); candidature.setDatModCand(LocalDateTime.now()); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjModified(pieceJustif, candidatureSave); } @@ -881,9 +883,9 @@ public void setIsConcernedFormulaire(final FormulairePresentation formulaire, if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) { return; } - String user = userController.getCurrentUserLogin(); + final String user = userController.getCurrentUserLogin(); if (isConcerned) { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("formulaire.window.concerne", new Object[] { formulaire.getLibFormulaire() }, UI.getCurrent().getLocale()), applicationContext.getMessage("formulaire.window.conditionnel.title", null, UI.getCurrent().getLocale())); @@ -892,25 +894,25 @@ public void setIsConcernedFormulaire(final FormulairePresentation formulaire, if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) { return; } - FormulaireCandPK pk = new FormulaireCandPK(formulaire.getFormulaire().getIdFormulaire(), candidature.getIdCand()); - FormulaireCand formulaireCand = formulaireCandRepository.findOne(pk); + final FormulaireCandPK pk = new FormulaireCandPK(formulaire.getFormulaire().getIdFormulaire(), candidature.getIdCand()); + final FormulaireCand formulaireCand = formulaireCandRepository.findOne(pk); if (formulaireCand != null) { formulaireCandRepository.delete(formulaireCand); candidature.setUserModCand(user); candidature.setDatModCand(LocalDateTime.now()); candidature.removeFormulaireCand(formulaireCand); - TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); formulaire.setCodStatut(statutAtt.getCodTypStatutPiece()); formulaire.setLibStatut(i18nController.getI18nTraduction(statutAtt.getI18nLibTypStatutPiece())); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.formulaireModified(formulaire, candidatureSave); } }); UI.getCurrent().addWindow(confirmWindow); } else { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("formulaire.window.nonConcerne", new Object[] { formulaire.getLibFormulaire() }, UI.getCurrent().getLocale()), applicationContext.getMessage("formulaire.window.conditionnel.title", null, UI.getCurrent().getLocale())); @@ -919,14 +921,14 @@ public void setIsConcernedFormulaire(final FormulairePresentation formulaire, if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) { return; } - FormulaireCandPK pk = new FormulaireCandPK(formulaire.getFormulaire().getIdFormulaire(), candidature.getIdCand()); + final FormulaireCandPK pk = new FormulaireCandPK(formulaire.getFormulaire().getIdFormulaire(), candidature.getIdCand()); FormulaireCand formulaireCand = formulaireCandRepository.findOne(pk); if (formulaireCand == null) { formulaireCand = new FormulaireCand(pk, user, candidature, formulaire.getFormulaire()); formulaireCand.setUserModFormulaireCand(user); - TypeStatutPiece statutNotConcern = tableRefController.getTypeStatutPieceNonConcerne(); + final TypeStatutPiece statutNotConcern = tableRefController.getTypeStatutPieceNonConcerne(); formulaire.setCodStatut(statutNotConcern.getCodTypStatutPiece()); formulaire.setLibStatut(i18nController.getI18nTraduction(statutNotConcern.getI18nLibTypStatutPiece())); formulaireCand = formulaireCandRepository.save(formulaireCand); @@ -934,7 +936,7 @@ public void setIsConcernedFormulaire(final FormulairePresentation formulaire, candidature.setUserModCand(user); candidature.updateFormulaireCand(formulaireCand); candidature.setDatModCand(LocalDateTime.now()); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.formulaireModified(formulaire, candidatureSave); } @@ -964,8 +966,8 @@ public void deleteFileToPieceJustificative(final PjPresentation pieceJustif, fin if (!fileController.isModeFileStockageOk(pieceJustif.getFilePj(), false)) { return; } - Fichier fichier = pieceJustif.getFilePj(); - ConfirmWindow confirmWindow = + final Fichier fichier = pieceJustif.getFilePj(); + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("file.window.confirmDelete", new Object[] { fichier.getNomFichier() }, UI.getCurrent().getLocale()), applicationContext.getMessage("file.window.confirmDeleteTitle", null, UI.getCurrent().getLocale())); @@ -977,13 +979,13 @@ public void deleteFileToPieceJustificative(final PjPresentation pieceJustif, fin if (isPjModified(pieceJustif, candidature, true, listener)) { return; } - PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), pieceJustif.getIdCandidature()); - PjCand pjCand = pjCandRepository.findOne(pk); - String user = userController.getCurrentNoDossierCptMinOrLogin(); + final PjCandPK pk = new PjCandPK(pieceJustif.getPieceJustif().getIdPj(), pieceJustif.getIdCandidature()); + final PjCand pjCand = pjCandRepository.findOne(pk); + final String user = userController.getCurrentNoDossierCptMinOrLogin(); removeFileToPj(pjCand); - TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); pieceJustif.setFilePj(null); pieceJustif.setCodStatut(statutAtt.getCodTypStatutPiece()); @@ -995,7 +997,7 @@ public void deleteFileToPieceJustificative(final PjPresentation pieceJustif, fin candidature.setDatModCand(LocalDateTime.now()); candidature.removePjCand(pjCand); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjModified(pieceJustif, candidatureSave); }); @@ -1012,8 +1014,8 @@ public void deleteFileToPieceJustificative(final PjPresentation pieceJustif, fin * @param pjCand */ public void removeFileToPj(final PjCand pjCand) { - Fichier fichier = pjCand.getFichier(); - PjCandPK idPjCand = pjCand.getId(); + final Fichier fichier = pjCand.getFichier(); + final PjCandPK idPjCand = pjCand.getId(); pjCandRepository.delete(pjCand); if (fichier != null) { FichierFiabilisation fichierFiabilisation = new FichierFiabilisation(fichier); @@ -1023,7 +1025,7 @@ public void removeFileToPj(final PjCand pjCand) { try { fileController.deleteFichier(fichier); fichierFiabilisationRepository.delete(fichierFiabilisation); - } catch (FileException e) { + } catch (final FileException e) { } } } @@ -1035,7 +1037,7 @@ public void removeFileToPj(final PjCand pjCand) { * @throws FileException */ public void removeFileToPjManually(final PjCand pjCand) throws FileException { - Fichier fichier = pjCand.getFichier(); + final Fichier fichier = pjCand.getFichier(); pjCandRepository.delete(pjCand); if (fichier != null) { fichierRepository.delete(fichier); @@ -1056,7 +1058,7 @@ public void changeStatutPj(final List listePj, final Candidature return; } - CtrCandActionPjWindow window = new CtrCandActionPjWindow(listePj); + final CtrCandActionPjWindow window = new CtrCandActionPjWindow(listePj); window.addChangeStatutPieceWindowListener((t, c) -> { /* Verrou */ if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) { @@ -1064,16 +1066,16 @@ public void changeStatutPj(final List listePj, final Candidature } /* Verification de modif de piece */ - for (PjPresentation pj : listePj) { + for (final PjPresentation pj : listePj) { if (isPjModified(pj, candidature, false, listener)) { Notification.show(applicationContext.getMessage("pjs.modified", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } } - String user = userController.getCurrentUserLogin(); + final String user = userController.getCurrentUserLogin(); listePj.forEach(e -> { - PjCandPK pk = new PjCandPK(e.getPieceJustif().getIdPj(), e.getIdCandidature()); + final PjCandPK pk = new PjCandPK(e.getPieceJustif().getIdPj(), e.getIdCandidature()); PjCand pjCand = pjCandRepository.findOne(pk); if (pjCand == null) { @@ -1086,7 +1088,7 @@ public void changeStatutPj(final List listePj, final Candidature pjCand.setUserModStatutPjCand(user); pjCandRepository.save(pjCand); - PjCand pjCandSave = pjCandRepository.findOne(pk); + final PjCand pjCandSave = pjCandRepository.findOne(pk); candidature.updatePjCand(pjCandSave); if (pjCandSave.getTypeStatutPiece() != null) { @@ -1098,7 +1100,7 @@ public void changeStatutPj(final List listePj, final Candidature e.setUserModStatut(getLibModStatut(pjCand.getUserModStatutPjCand(), pjCand.getDatModStatutPjCand())); }); candidature.setUserModCand(user); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjsModified(listePj, candidatureSave); }); UI.getCurrent().addWindow(window); @@ -1128,28 +1130,28 @@ public void checkPJAdmin(final PjPresentation pj, final Candidature candidature, return; } - PjCandPK pk = new PjCandPK(pj.getPieceJustif().getIdPj(), pj.getIdCandidature()); - PjCand pjCand = pjCandRepository.findOne(pk); + final PjCandPK pk = new PjCandPK(pj.getPieceJustif().getIdPj(), pj.getIdCandidature()); + final PjCand pjCand = pjCandRepository.findOne(pk); if (pjCand == null) { Notification.show(applicationContext.getMessage("pj.admin.pjnotexist", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } - Fichier fichier = pjCand.getFichier(); - String user = userController.getCurrentNoDossierCptMinOrLogin(); + final Fichier fichier = pjCand.getFichier(); + final String user = userController.getCurrentNoDossierCptMinOrLogin(); if (fichier != null) { try { if (!fileController.testDemat(false)) { return; } - Boolean exist = fileController.existFile(fichier); + final Boolean exist = fileController.existFile(fichier); if (!exist) { - ConfirmWindow confirmWindow = + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("pj.admin.window.filenotexist", null, UI.getCurrent().getLocale()), applicationContext.getMessage("pj.admin.window.title", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(event -> { pjCandRepository.delete(pjCand); fichierRepository.delete(fichier); - TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); + final TypeStatutPiece statutAtt = tableRefController.getTypeStatutPieceAttente(); pj.setFilePj(null); pj.setCodStatut(statutAtt.getCodTypStatutPiece()); @@ -1159,7 +1161,7 @@ public void checkPJAdmin(final PjPresentation pj, final Candidature candidature, candidature.setUserModCand(user); candidature.setDatModCand(LocalDateTime.now()); candidature.removePjCand(pjCand); - Candidature candidatureSave = candidatureRepository.save(candidature); + final Candidature candidatureSave = candidatureRepository.save(candidature); listener.pjModified(pj, candidatureSave); Notification.show(applicationContext.getMessage("pj.admin.success", null, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION); @@ -1168,7 +1170,7 @@ public void checkPJAdmin(final PjPresentation pj, final Candidature candidature, } else { Notification.show(applicationContext.getMessage("pj.admin.error.fileexist", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); } - } catch (FileException e) { + } catch (final FileException e) { return; } } @@ -1180,25 +1182,25 @@ public void checkPJAdmin(final PjPresentation pj, final Candidature candidature, * @return un zip contenant tous les dossiers */ public OnDemandFile downlaodMultiplePjZip(final List liste, final PieceJustif pieceJustif) { - ByteArrayInOutStream out = new ByteArrayInOutStream(); - ZipOutputStream zos = new ZipOutputStream(out); + final ByteArrayInOutStream out = new ByteArrayInOutStream(); + final ZipOutputStream zos = new ZipOutputStream(out); Boolean error = false; int nbPj = 0; - for (Candidature candidature : liste) { - PjCand pj = getPjCandFromList(pieceJustif, candidature, true); + for (final Candidature candidature : liste) { + final PjCand pj = getPjCandFromList(pieceJustif, candidature, true); if (pj == null) { continue; } - Fichier file = pj.getFichier(); + final Fichier file = pj.getFichier(); if (file == null) { continue; } - InputStream is = fileController.getInputStreamFromFichier(file); + final InputStream is = fileController.getInputStreamFromFichier(file); if (is == null) { continue; } try { - String fileName = + final String fileName = applicationContext.getMessage("candidature.download.pj.file.name", new Object[] { candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(), candidature.getCandidat().getNomPatCandidat(), @@ -1207,13 +1209,13 @@ public OnDemandFile downlaodMultiplePjZip(final List liste, final P file.getNomFichier() }, UI.getCurrent().getLocale()); zos.putNextEntry(new ZipEntry(fileName)); int count; - byte data[] = new byte[2048]; + final byte data[] = new byte[2048]; while ((count = is.read(data, 0, 2048)) != -1) { zos.write(data, 0, count); } zos.closeEntry(); nbPj++; - } catch (IOException e) { + } catch (final IOException e) { error = true; logger.error("erreur a la génération d'un dossier lors du zip", e); } finally { @@ -1232,7 +1234,7 @@ public OnDemandFile downlaodMultiplePjZip(final List liste, final P return null; } return new OnDemandFile(pieceJustif.getCodPj() + ".zip", out.getInputStream()); - } catch (IOException e) { + } catch (final IOException e) { logger.error("erreur a la génération du zip", e); Notification.show(applicationContext.getMessage("candidature.download.pj.error.zip", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return null; diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/CommissionController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/CommissionController.java index 2d5d6192..1e17661e 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/CommissionController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/CommissionController.java @@ -495,9 +495,11 @@ public List getListPresentationWritable(final Commissio int i = 1; liste.add(getItemPresentation(i++, Commission_.mailComm.getName(), commission.getMailComm())); liste.add(getItemPresentation(i++, Commission_.telComm.getName(), commission.getTelComm())); + liste.add(getItemPresentation(i++, Commission_.urlComm.getName(), commission.getUrlComm())); liste.add(getItemPresentation(i++, Commission_.faxComm.getName(), commission.getFaxComm())); liste.add(getItemPresentation(i++, Commission_.i18nCommentRetourComm.getName(), i18nController.getI18nTraduction(commission.getI18nCommentRetourComm()))); liste.add(getItemPresentation(i++, Commission_.adresse.getName(), (commission.getAdresse() != null) ? adresseController.getLibelleAdresse(commission.getAdresse(), " ") : "")); + liste.add(getItemPresentation(i++, Commission_.mailAlertComm.getName(), commission.getMailAlertComm())); liste.add(getItemPresentation(i++, Commission_.temAlertPropComm.getName(), commission.getTemAlertPropComm())); liste.add(getItemPresentation(i++, Commission_.temAlertAnnulComm.getName(), commission.getTemAlertAnnulComm())); liste.add(getItemPresentation(i++, Commission_.temAlertTransComm.getName(), commission.getTemAlertTransComm())); diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/FormationController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/FormationController.java index 4d0b1df9..fe0593ce 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/FormationController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/FormationController.java @@ -64,7 +64,6 @@ /** * Gestion de l'entité formation - * * @author Kevin Hergalant */ @Component @@ -106,12 +105,12 @@ public List getFormations() { } /** - * @param securityCtrCand - * @return liste des formations d'un centre de candidature + * @param securityCtrCand + * @return liste des formations d'un centre de candidature */ public List getFormationsByCtrCand(final SecurityCtrCandFonc securityCtrCand) { - List listeFormation = formationRepository.findByCommissionCentreCandidatureIdCtrCand(securityCtrCand.getCtrCand().getIdCtrCand()); - Campagne campagne = campagneController.getCampagneActive(); + final List listeFormation = formationRepository.findByCommissionCentreCandidatureIdCtrCand(securityCtrCand.getCtrCand().getIdCtrCand()); + final Campagne campagne = campagneController.getCampagneActive(); if (securityCtrCand.getIsGestAllCommission()) { return listeFormation.stream().map(e -> alimenteFormationData(campagne, e)).collect(Collectors.toList()); } else { @@ -120,17 +119,17 @@ public List getFormationsByCtrCand(final SecurityCtrCandFonc security } /** - * @param f - * @return la formation alimentée en data supplémentaires + * @param f + * @return la formation alimentée en data supplémentaires */ public Formation alimenteFormationData(final Formation f) { return alimenteFormationData(campagneController.getCampagneActive(), f); } /** - * @param campagne - * @param f - * @return la formation alimentée en data supplémentaires + * @param campagne + * @param f + * @return la formation alimentée en data supplémentaires */ public Formation alimenteFormationData(final Campagne campagne, final Formation f) { String code = null; @@ -141,24 +140,24 @@ public Formation alimenteFormationData(final Campagne campagne, final Formation if (campagne == null) { code = ConstanteUtils.FLAG_BLUE; } else { - LocalDate dateDeb = f.getDatDebDepotForm(); - LocalDate dateFin = f.getDatDebDepotForm(); - LocalDate dateRetour = f.getDatRetourForm(); - LocalDate dateConfirm = f.getDatConfirmForm(); - LocalDate dateConfirmListComp = f.getDatConfirmListCompForm(); - LocalDate datePubli = f.getDatPubliForm(); - LocalDate dateJury = f.getDatJuryForm(); - LocalDate dateAnalyse = f.getDatAnalyseForm(); - LocalDate datePreselect = f.getPreselectDateForm(); + final LocalDate dateDeb = f.getDatDebDepotForm(); + final LocalDate dateFin = f.getDatDebDepotForm(); + final LocalDate dateRetour = f.getDatRetourForm(); + final LocalDate dateConfirm = f.getDatConfirmForm(); + final LocalDate dateConfirmListComp = f.getDatConfirmListCompForm(); + final LocalDate datePubli = f.getDatPubliForm(); + final LocalDate dateJury = f.getDatJuryForm(); + final LocalDate dateAnalyse = f.getDatAnalyseForm(); + final LocalDate datePreselect = f.getPreselectDateForm(); if (!MethodUtils.isDateIncludeInInterval(dateDeb, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateFin, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateRetour, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateConfirm, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateConfirmListComp, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(datePubli, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateJury, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(dateAnalyse, campagne.getDatDebCamp(), campagne.getDatFinCamp()) - || !MethodUtils.isDateIncludeInInterval(datePreselect, campagne.getDatDebCamp(), campagne.getDatFinCamp())) { + || !MethodUtils.isDateIncludeInInterval(dateFin, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(dateRetour, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(dateConfirm, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(dateConfirmListComp, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(datePubli, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(dateJury, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(dateAnalyse, campagne.getDatDebCamp(), campagne.getDatFinCamp()) + || !MethodUtils.isDateIncludeInInterval(datePreselect, campagne.getDatDebCamp(), campagne.getDatFinCamp())) { code = ConstanteUtils.FLAG_YELLOW; } else { code = ConstanteUtils.FLAG_GREEEN; @@ -166,20 +165,24 @@ public Formation alimenteFormationData(final Campagne campagne, final Formation } } f.setFlagEtat(code); - f.setDateVoeux(applicationContext.getMessage("formation.table.dateVoeux.label", new Object[] { - formatterDate.format(f.getDatDebDepotForm()), formatterDate.format(f.getDatFinDepotForm())}, UI.getCurrent().getLocale())); + f.setDateVoeux(applicationContext.getMessage("formation.table.dateVoeux.label", + new Object[] + { + formatterDate.format(f.getDatDebDepotForm()), + formatterDate.format(f.getDatFinDepotForm()) }, + UI.getCurrent().getLocale())); return f; } /** Ouvre une fenêtre d'édition d'un nouveau formation. */ public void editNewFormation(final SecurityCtrCandFonc securityCtrCand) { - CentreCandidature ctrCand = securityCtrCand.getCtrCand(); - Formation form = new Formation(userController.getCurrentUserLogin()); + final CentreCandidature ctrCand = securityCtrCand.getCtrCand(); + final Formation form = new Formation(userController.getCurrentUserLogin()); - I18n i18n = new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_FORM_INFO_COMP)); + final I18n i18n = new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_FORM_INFO_COMP)); if (ctrCand.getInfoCompCtrCand() != null) { - I18nTraduction trad = new I18nTraduction(ctrCand.getInfoCompCtrCand(), i18n, cacheController.getLangueDefault()); - List i18nTraductions = new ArrayList<>(); + final I18nTraduction trad = new I18nTraduction(ctrCand.getInfoCompCtrCand(), i18n, cacheController.getLangueDefault()); + final List i18nTraductions = new ArrayList<>(); i18nTraductions.add(trad); i18n.setI18nTraductions(i18nTraductions); } @@ -204,7 +207,6 @@ public void editNewFormation(final SecurityCtrCandFonc securityCtrCand) { /** * Ouvre une fenêtre d'édition de formation. - * * @param formation * @param securityCtrCand */ @@ -218,14 +220,13 @@ public void editFormation(final Formation formation, final SecurityCtrCandFonc s if (formation.getI18nInfoCompForm() == null) { formation.setI18nInfoCompForm(new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_FORM_INFO_COMP))); } - CtrCandFormationWindow window = new CtrCandFormationWindow(formation, securityCtrCand); + final CtrCandFormationWindow window = new CtrCandFormationWindow(formation, securityCtrCand); window.addCloseListener(e -> lockController.releaseLock(formation)); UI.getCurrent().addWindow(window); } /** * Edite les pieces complémentaires d'une formation - * * @param formations * @param ctrCand */ @@ -239,16 +240,16 @@ public void editPieceCompFormation(final List formations, final Centr List pieceJustifs = new ArrayList<>(); List formulaires = new ArrayList<>(); if (formations.size() == 1) { - Formation form = formations.get(0); + final Formation form = formations.get(0); pieceJustifs = form.getPieceJustifs(); formulaires = form.getFormulaires(); } else { /* On calcule les PJ et formulaires communs */ - Formation form = formations.get(0); + final Formation form = formations.get(0); pieceJustifs = form.getPieceJustifs(); formulaires = form.getFormulaires(); - for (Formation formation : formations) { + for (final Formation formation : formations) { if (pieceJustifs.size() != 0) { pieceJustifs.retainAll(formation.getPieceJustifs()); } @@ -261,20 +262,20 @@ public void editPieceCompFormation(final List formations, final Centr } } - CtrCandPieceComplementaireWindow window = new CtrCandPieceComplementaireWindow(formations, ctrCand, pieceJustifs, formulaires); + final CtrCandPieceComplementaireWindow window = new CtrCandPieceComplementaireWindow(formations, ctrCand, pieceJustifs, formulaires); window.addCloseListener(e -> unlockFormations(formations)); UI.getCurrent().addWindow(window); } /** * Enregistre les PJ et formulaires d'une ou plusieurs formations - * * @param formations * @param listPj * @param listFormulaire */ - public void savePiecesComplementaires(final List formations, final List listPj, - final List listFormulaire) { + public void savePiecesComplementaires(final List formations, + final List listPj, + final List listFormulaire) { formations.forEach(form -> { /* Verrou */ if (!lockController.getLockOrNotify(form, null)) { @@ -289,7 +290,6 @@ public void savePiecesComplementaires(final List formations, final Li /** * Edition des dates en masse - * * @param formations * @param ctrCand */ @@ -298,9 +298,9 @@ public void editDates(final List formations, final CentreCandidature unlockFormations(formations); return; } - Formation form = new Formation(); + final Formation form = new Formation(); if (formations.size() == 1) { - Formation oneForm = formations.get(0); + final Formation oneForm = formations.get(0); form.setTesForm(oneForm.getTesForm()); form.setDatConfirmForm(oneForm.getDatConfirmForm()); form.setDatConfirmListCompForm(oneForm.getDatConfirmListCompForm()); @@ -321,14 +321,13 @@ public void editDates(final List formations, final CentreCandidature form.setDatPubliForm(ctrCand.getDatPubliCtrCand()); form.setDatRetourForm(ctrCand.getDatRetourCtrCand()); } - CtrCandFormationDatesWindow window = new CtrCandFormationDatesWindow(form, formations); + final CtrCandFormationDatesWindow window = new CtrCandFormationDatesWindow(form, formations); window.addCloseListener(e -> unlockFormations(formations)); UI.getCurrent().addWindow(window); } /** * Enregistre les dates des formations en masse - * * @param formDate * @param formations */ @@ -343,16 +342,19 @@ public void saveDatesFormation(final Formation formDate, final List f form.setDatJuryForm(formDate.getDatJuryForm()); form.setDatPubliForm(formDate.getDatPubliForm()); form.setDatRetourForm(formDate.getDatRetourForm()); + form.setDelaiConfirmForm(formDate.getDelaiConfirmForm()); + form.setDelaiConfirmListCompForm(formDate.getDelaiConfirmListCompForm()); + saveFormation(form); }); } /** - * @param formations - * @return true si une formation est lockée + * @param formations + * @return true si une formation est lockée */ private Boolean checkLockFormations(final List formations) { - for (Formation f : formations) { + for (final Formation f : formations) { if (!lockController.getLockOrNotify(f, null)) { return false; } @@ -362,18 +364,16 @@ private Boolean checkLockFormations(final List formations) { /** * Unlock la liste de formations - * * @param formations */ private void unlockFormations(final List formations) { - for (Formation f : formations) { + for (final Formation f : formations) { lockController.releaseLock(f); } } /** * Enregistre un formation - * * @param formation */ public void saveFormation(Formation formation) { @@ -385,7 +385,7 @@ public void saveFormation(Formation formation) { } formation.setUserModForm(userController.getCurrentUserLogin()); /* Pour les i18n nullable, attention a les supprimer si besoin */ - Integer idI18n = i18nController.getIdI18nNullable(formation.getI18nInfoCompForm()); + final Integer idI18n = i18nController.getIdI18nNullable(formation.getI18nInfoCompForm()); formation.setI18nInfoCompForm(i18nController.saveI18nNullable(formation.getI18nInfoCompForm())); formation = formationRepository.saveAndFlush(formation); if (formation.getI18nInfoCompForm() == null && idI18n != null) { @@ -402,14 +402,13 @@ public void saveFormation(Formation formation) { /** * Supprime une formation - * * @param formation */ public void deleteFormation(final Formation formation) { Assert.notNull(formation, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale())); if (candidatureRepository.countByFormation(formation) > 0) { - Notification.show(applicationContext.getMessage("formation.error.delete", new Object[] {Candidature.class.getSimpleName()}, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("formation.error.delete", new Object[] { Candidature.class.getSimpleName() }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } @@ -418,8 +417,11 @@ public void deleteFormation(final Formation formation) { return; } - ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("formation.window.confirmDelete", new Object[] { - formation.getCodForm()}, UI.getCurrent().getLocale()), applicationContext.getMessage("formation.window.confirmDeleteTitle", null, UI.getCurrent().getLocale())); + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("formation.window.confirmDelete", + new Object[] + { + formation.getCodForm() }, + UI.getCurrent().getLocale()), applicationContext.getMessage("formation.window.confirmDeleteTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(e -> { /* Contrôle que le client courant possède toujours le lock */ if (lockController.getLockOrNotify(formation, null)) { @@ -438,13 +440,12 @@ public void deleteFormation(final Formation formation) { /** * Verifie l'unicité du code - * - * @param cod - * @param id - * @return true si le code est unique + * @param cod + * @param id + * @return true si le code est unique */ public Boolean isCodFormUnique(final String cod, final Integer id) { - Formation form = formationRepository.findByCodForm(cod); + final Formation form = formationRepository.findByCodForm(cod); if (form == null) { return true; } else { @@ -456,13 +457,13 @@ public Boolean isCodFormUnique(final String cod, final Integer id) { } /** - * @param search - * @return la liste des VET d'un CGE et d'une recherche + * @param search + * @return la liste des VET d'un CGE et d'une recherche * @throws SiScolException */ public List getVetByCGE(final String search) throws SiScolException { if (siScolService.isImplementationApogee()) { - SecurityCentreCandidature ctrCand = userController.getCentreCandidature(); + final SecurityCentreCandidature ctrCand = userController.getCentreCandidature(); if (ctrCand != null) { if (ctrCand.getIsAdmin()) { return siScolService.getListFormation(null, search); @@ -477,9 +478,9 @@ public List getVetByCGE(final String search) throws SiScolException { } /** - * @param codEtpVet - * @param codVrsVet - * @return une liste de diplome grace a une vet + * @param codEtpVet + * @param codVrsVet + * @return une liste de diplome grace a une vet * @throws SiScolException */ public List getDiplomeByVETs(final String codEtpVet, final String codVrsVet) throws SiScolException { @@ -490,8 +491,8 @@ public List getDiplomeByVETs(final String codEtpVet, final String codVr } /** - * @param formation - * @return true si l'utilisateur a le droit de voir la formation + * @param formation + * @return true si l'utilisateur a le droit de voir la formation */ public Boolean hasRighToSeeFormation(final Formation formation, final SecurityCtrCandFonc securityCtrCand) { if (securityCtrCand == null || securityCtrCand.getCtrCand() == null) { @@ -505,9 +506,9 @@ public Boolean hasRighToSeeFormation(final Formation formation, final SecurityCt } /** - * @param liste - * liste de formations - * @return le fichier + * @param liste + * liste de formations + * @return le fichier */ public OnDemandFile generateExport(final List liste, final SecurityCtrCandFonc ctrCand) { if (liste == null || liste.size() == 0) { @@ -536,7 +537,7 @@ public OnDemandFile generateExport(final List liste, final SecurityCt e.setInfoCompFormStr(infosComp); }); - Map beans = new HashMap<>(); + final Map beans = new HashMap<>(); beans.put("formations", liste); String libelle = ""; @@ -544,25 +545,34 @@ public OnDemandFile generateExport(final List liste, final SecurityCt libelle = ctrCand.getCtrCand().getLibCtrCand() + " (" + ctrCand.getCtrCand().getCodCtrCand() + ")"; } - String libFile = applicationContext.getMessage("formation.export.nom.fichier", new Object[] {libelle, - DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss").format(LocalDateTime.now())}, UI.getCurrent().getLocale()); + final String libFile = applicationContext.getMessage("formation.export.nom.fichier", + new Object[] + { libelle, + DateTimeFormatter.ofPattern("yyyyMMdd-HHmmss").format(LocalDateTime.now()) }, + UI.getCurrent().getLocale()); return exportController.generateXlsxExport(beans, "formations_template", libFile); } /** - * @param datConfirm - * @param datConfirmListComp - * @param datDebDepot - * @param datAnalyse - * @param datFinDepo - * @param datJury - * @param datPubli - * @param datRetour - * @return un eventuel text d'erreur + * @param datConfirm + * @param datConfirmListComp + * @param datDebDepot + * @param datAnalyse + * @param datFinDepo + * @param datJury + * @param datPubli + * @param datRetour + * @return un eventuel text d'erreur */ - public String getTxtErrorEditDate(final Date datConfirm, final Date datConfirmListComp, final Date datDebDepot, final Date datAnalyse, final Date datFinDepo, final Date datJury, - final Date datPubli, final Date datRetour) { + public String getTxtErrorEditDate(final Date datConfirm, + final Date datConfirmListComp, + final Date datDebDepot, + final Date datAnalyse, + final Date datFinDepo, + final Date datJury, + final Date datPubli, + final Date datRetour) { String txtError = ""; /* Date de fin de dépôt des voeux >= Date de début de dépôt des voeux */ if (datFinDepo.before(datDebDepot)) { @@ -600,16 +610,12 @@ public String getTxtErrorEditDate(final Date datConfirm, final Date datConfirmLi if (datPubli != null && datConfirm.before(datPubli)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmForm.getName(), Formation_.datPubliForm.getName()); } - /* - * Date limite de confirmation >= Date de jury - **/ + /* Date limite de confirmation >= Date de jury **/ if (datJury != null && datConfirm.before(datJury)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmForm.getName(), Formation_.datJuryForm.getName()); } - /* - * Date limite de confirmation >= Date de publication des résultats - **/ + /* Date limite de confirmation >= Date de publication des résultats **/ if (datConfirm.before(datRetour)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmForm.getName(), Formation_.datRetourForm.getName()); } @@ -620,23 +626,17 @@ public String getTxtErrorEditDate(final Date datConfirm, final Date datConfirmLi if (datPubli != null && datConfirmListComp.before(datPubli)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmListCompForm.getName(), Formation_.datPubliForm.getName()); } - /* - * Date limite de confirmation liste comp >= Date de jury - **/ + /* Date limite de confirmation liste comp >= Date de jury **/ if (datJury != null && datConfirmListComp.before(datJury)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmListCompForm.getName(), Formation_.datJuryForm.getName()); } - /* - * Date limite de confirmation liste comp >= Date de publication des résultats - **/ + /* Date limite de confirmation liste comp >= Date de publication des résultats **/ if (datConfirmListComp.before(datRetour)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmListCompForm.getName(), Formation_.datRetourForm.getName()); } - /* - * Date limite de confirmation liste comp >= Date de confirmation - **/ + /* Date limite de confirmation liste comp >= Date de confirmation **/ if (datConfirm != null && datConfirmListComp.before(datConfirm)) { txtError = txtError + getErrorMessageDate(txtError, Formation_.datConfirmListCompForm.getName(), Formation_.datConfirmForm.getName()); } @@ -646,9 +646,9 @@ public String getTxtErrorEditDate(final Date datConfirm, final Date datConfirmLi } /** - * @param txt - * @param libDate - * @param libDateToCompare + * @param txt + * @param libDate + * @param libDateToCompare * @return */ private String getErrorMessageDate(final String txt, final String libDate, final String libDateToCompare) { @@ -657,8 +657,11 @@ private String getErrorMessageDate(final String txt, final String libDate, final txtRet = "
"; } - return txtRet = txtRet + applicationContext.getMessage("formation.table.dat.error", new Object[] { + return txtRet = txtRet + applicationContext.getMessage("formation.table.dat.error", + new Object[] + { applicationContext.getMessage("formation.table." + libDate, null, UI.getCurrent().getLocale()), - applicationContext.getMessage("formation.table." + libDateToCompare, null, UI.getCurrent().getLocale())}, UI.getCurrent().getLocale()); + applicationContext.getMessage("formation.table." + libDateToCompare, null, UI.getCurrent().getLocale()) }, + UI.getCurrent().getLocale()); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/FormulaireController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/FormulaireController.java index 6ae24a89..58c92cc7 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/FormulaireController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/FormulaireController.java @@ -62,12 +62,11 @@ /** * Gestion de l'entité formulaire - * * @author Kevin Hergalant */ @Component public class FormulaireController { - private Logger logger = LoggerFactory.getLogger(FormulaireController.class); + private final Logger logger = LoggerFactory.getLogger(FormulaireController.class); /* Injections */ @Resource @@ -106,13 +105,13 @@ public List getFormulairesEnService() { } /** - * @param cand - * @return la liste des formulaires à afficher pour une candidature - * Tout les commune de la scol + tout les commune du ctr + tout les formulaires de la formation + les formulaires effacées + * @param cand + * @return la liste des formulaires à afficher pour une candidature + * Tout les commune de la scol + tout les commune du ctr + tout les formulaires de la formation + les formulaires effacées */ public List getFormulaireForCandidature(final Candidature cand) { - Formation formation = cand.getFormation(); - List liste = new ArrayList<>(); + final Formation formation = cand.getFormation(); + final List liste = new ArrayList<>(); liste.addAll(getFormulairesByCtrCandEnService(null, true)); liste.addAll(getFormulairesByCtrCandEnService(formation.getCommission().getCentreCandidature().getIdCtrCand(), true)); liste.addAll(formation.getFormulaires().stream().filter(e -> e.getTesFormulaire()).collect(Collectors.toList())); @@ -124,18 +123,17 @@ public List getFormulaireForCandidature(final Candidature cand) { /** * Recherche les formulaires d'un centre de candidatures - * - * @param idCtrCand - * @return les formulaires d'un centre de candidatures + * @param idCtrCand + * @return les formulaires d'un centre de candidatures */ public List getFormulairesByCtrCand(final Integer idCtrCand) { return formulaireRepository.findByCentreCandidatureIdCtrCand(idCtrCand); } /** - * @param idCtrCand - * @param commun - * @return les formulaires d'un centre de candidatures en service et commun ou non + * @param idCtrCand + * @param commun + * @return les formulaires d'un centre de candidatures en service et commun ou non */ private List getFormulairesByCtrCandEnService(final Integer idCtrCand, final Boolean commun) { return formulaireRepository.findByCentreCandidatureIdCtrCandAndTesFormulaireAndTemCommunFormulaire(idCtrCand, true, commun); @@ -149,23 +147,22 @@ public List getFormulairesCommunScolEnService() { /** * Renvoie la liste des formulaires pour un ctrCand + * scol - * - * @param idCtrCand - * @return les formulaires et propre au ctr et commun a tout l'etablissement + * @param idCtrCand + * @return les formulaires et propre au ctr et commun a tout l'etablissement */ public List getFormulairesByCtrCandAndScolCentral(final Integer idCtrCand) { - List liste = new ArrayList<>(); + final List liste = new ArrayList<>(); liste.addAll(getFormulairesByCtrCandEnService(null, false)); liste.addAll(getFormulairesByCtrCandEnService(idCtrCand, false)); return liste; } /** - * @param idCtrCand - * @return la liste des formulaires en service et commun + * @param idCtrCand + * @return la liste des formulaires en service et commun */ public List getFormulairesCommunCtrCandEnService(final Integer idCtrCand) { - List liste = new ArrayList<>(); + final List liste = new ArrayList<>(); liste.addAll(formulaireRepository.findByCentreCandidatureIdCtrCandAndTesFormulaireAndTemCommunFormulaire(null, true, true)); liste.addAll(formulaireRepository.findByCentreCandidatureIdCtrCandAndTesFormulaireAndTemCommunFormulaire(idCtrCand, true, true)); return liste; @@ -173,11 +170,10 @@ public List getFormulairesCommunCtrCandEnService(final Integer idCtr /** * Ouvre une fenêtre d'édition d'un nouveau formulaire. - * * @param ctrCand */ public void editNewFormulaire(final CentreCandidature ctrCand) { - Formulaire formulaire = new Formulaire(userController.getCurrentUserLogin()); + final Formulaire formulaire = new Formulaire(userController.getCurrentUserLogin()); formulaire.setI18nLibFormulaire(new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_FORM_LIB))); formulaire.setI18nUrlFormulaire(new I18n(i18nController.getTypeTraduction(NomenclatureUtils.TYP_TRAD_FORM_URL))); formulaire.setCentreCandidature(ctrCand); @@ -186,7 +182,6 @@ public void editNewFormulaire(final CentreCandidature ctrCand) { /** * Ouvre une fenêtre d'édition de formulaire. - * * @param formulaire */ public void editFormulaire(final Formulaire formulaire) { @@ -197,14 +192,13 @@ public void editFormulaire(final Formulaire formulaire) { return; } - FormulaireWindow window = new FormulaireWindow(formulaire); + final FormulaireWindow window = new FormulaireWindow(formulaire); window.addCloseListener(e -> lockController.releaseLock(formulaire)); UI.getCurrent().addWindow(window); } /** * Enregistre un formulaire - * * @param formulaire */ public void saveFormulaire(Formulaire formulaire) { @@ -224,14 +218,13 @@ public void saveFormulaire(Formulaire formulaire) { /** * Supprime une formulaire - * * @param formulaire */ public void deleteFormulaire(final Formulaire formulaire) { Assert.notNull(formulaire, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale())); if (formulaireCandRepository.countByFormulaire(formulaire) > 0) { - Notification.show(applicationContext.getMessage("formulaire.error.delete", new Object[] {FormulaireCand.class.getSimpleName()}, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("formulaire.error.delete", new Object[] { FormulaireCand.class.getSimpleName() }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } @@ -240,8 +233,8 @@ public void deleteFormulaire(final Formulaire formulaire) { return; } - ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("motivAvis.window.confirmDelete", new Object[] {formulaire.getCodFormulaire()}, UI.getCurrent().getLocale()), - applicationContext.getMessage("motivAvis.window.confirmDeleteTitle", null, UI.getCurrent().getLocale())); + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("motivAvis.window.confirmDelete", new Object[] { formulaire.getCodFormulaire() }, UI.getCurrent().getLocale()), + applicationContext.getMessage("motivAvis.window.confirmDeleteTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(e -> { /* Contrôle que le client courant possède toujours le lock */ if (lockController.getLockOrNotify(formulaire, null)) { @@ -259,19 +252,18 @@ public void deleteFormulaire(final Formulaire formulaire) { /** * Verifie l'unicité du code - * - * @param cod - * @param id - * @return true si le code est unique + * @param cod + * @param id + * @return true si le code est unique */ public Boolean isCodFormUnique(final String cod, final String idLimeSurveyStr, final Integer id) { Integer idLimeSurvey = -1; try { idLimeSurvey = Integer.valueOf(idLimeSurveyStr); - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { } - List form = formulaireRepository.findByCodFormulaireOrIdFormulaireLimesurvey(cod, idLimeSurvey); + final List form = formulaireRepository.findByCodFormulaireOrIdFormulaireLimesurvey(cod, idLimeSurvey); if (form.size() == 0) { return true; } else if (form.size() == 1 && form.get(0).getIdFormulaire().equals(id)) { @@ -282,7 +274,7 @@ public Boolean isCodFormUnique(final String cod, final String idLimeSurveyStr, f /** Lance le batch de synchro LimeSurvey */ public void launchBatchSyncLimeSurvey() { - List listeLangue = new ArrayList<>(cacheController.getLangueEnServiceWithoutDefault()); + final List listeLangue = new ArrayList<>(cacheController.getLangueEnServiceWithoutDefault()); listeLangue.add(cacheController.getLangueDefault()); // on parcourt la liste des idLimeSurvey distinct et on exporte les réponse pour chaque langue en service @@ -293,28 +285,29 @@ public void launchBatchSyncLimeSurvey() { /** * Synchronise un formulaire - * * @param idFormulaireLimeSurvey */ public void syncSurvey(final Integer idFormulaireLimeSurvey) { - String codLangue = null; + logger.debug("Synchronisation formulaire " + idFormulaireLimeSurvey); + final String codLangue = null; + try { /* On recherche les réponses du formulaire que l'on dedoublonne par rapport à la date de reponse */ - for (SurveyReponse reponse : getListeReponseDedoublonne(limeSurveyRest.exportResponse(idFormulaireLimeSurvey, codLangue))) { + for (final SurveyReponse reponse : getListeReponseDedoublonne(limeSurveyRest.exportResponse(idFormulaireLimeSurvey, codLangue))) { if (reponse.getNumDossier() == null) { continue; } /* Recup des info du candidat */ - CompteMinima cptMin = candidatController.searchCptMinByNumDossier(reponse.getNumDossier()); + final CompteMinima cptMin = candidatController.searchCptMinByNumDossier(reponse.getNumDossier()); if (cptMin == null || cptMin.getCandidat() == null) { continue; } - Candidat candidat = cptMin.getCandidat(); - FormulaireCandidatPK pk = new FormulaireCandidatPK(candidat.getIdCandidat(), idFormulaireLimeSurvey); + final Candidat candidat = cptMin.getCandidat(); + final FormulaireCandidatPK pk = new FormulaireCandidatPK(candidat.getIdCandidat(), idFormulaireLimeSurvey); LocalDateTime timeReponse; try { timeReponse = LocalDateTime.parse(reponse.getSubmitdate(), formatterDateTimeWS); - } catch (Exception e) { + } catch (final Exception e) { timeReponse = LocalDateTime.now(); } @@ -326,33 +319,35 @@ public void syncSurvey(final Integer idFormulaireLimeSurvey) { formulaireCandidat.setCandidat(candidat); formulaireCandidat.setReponsesFormulaireCandidat(getTextReponseSurvey(reponse.getMapReponses())); formulaireCandidat.setDatReponseFormulaireCandidat(timeReponse); + logger.debug("Enr. reponse formulaire : " + formulaireCandidat); formulaireCandidatRepository.save(formulaireCandidat); } else if (timeReponse.isAfter(formulaireCandidat.getDatReponseFormulaireCandidat())) { formulaireCandidat.setReponsesFormulaireCandidat(getTextReponseSurvey(reponse.getMapReponses())); formulaireCandidat.setDatReponseFormulaireCandidat(timeReponse); + logger.debug("Enr. reponse formulaire : " + formulaireCandidat); formulaireCandidatRepository.save(formulaireCandidat); } } - } catch (Exception e) { + } catch (final Exception e) { logger.error("Erreur WebService LimeSurvey (idFormulaireLimeSurvey=" + idFormulaireLimeSurvey + ")", e); return; } } /** - * @param listeReponse - * @return la liste dedoublonne de réponse avec la réponse max + * @param listeReponse + * @return la liste dedoublonne de réponse avec la réponse max */ private List getListeReponseDedoublonne(final List listeReponse) { if (listeReponse == null) { return new ArrayList<>(); } - Map mapReponse = new HashMap<>(); + final Map mapReponse = new HashMap<>(); listeReponse.forEach(e -> { if (e.getNumDossier() == null || e.getSubmitdate() == null) { return; } - SurveyReponse rep = mapReponse.get(e.getNumDossier()); + final SurveyReponse rep = mapReponse.get(e.getNumDossier()); if (rep == null || e.getSubmitdate().compareTo(rep.getSubmitdate()) > 0) { mapReponse.put(e.getNumDossier(), e); } @@ -361,21 +356,21 @@ private List getListeReponseDedoublonne(final List } /** - * @param mapReponses - * @return les réponses formatées + * @param mapReponses + * @return les réponses formatées */ private String getTextReponseSurvey(final Map mapReponses) { String txtReponse = null; if (mapReponses == null) { return txtReponse; } - /*Nettoyage réponses ignorées*/ + /* Nettoyage réponses ignorées */ ConstanteUtils.LIME_SURVEY_FIELD_TO_IGNORE.forEach(e -> mapReponses.remove(e)); if (mapReponses.size() == 0) { return txtReponse; } - for (Entry entry : mapReponses.entrySet()) { + for (final Entry entry : mapReponses.entrySet()) { if (txtReponse == null) { txtReponse = ""; } @@ -386,21 +381,23 @@ private String getTextReponseSurvey(final Map mapReponses) { /** Teste la connexion à LimeSurvey */ public void testConnexionLS() { - InputWindow inputWindow = new InputWindow(applicationContext.getMessage("version.ls.message", null, UI.getCurrent().getLocale()), - applicationContext.getMessage("version.ls.title", null, UI.getCurrent().getLocale()), false, 15); + final InputWindow inputWindow = new InputWindow(applicationContext.getMessage("version.ls.message", null, UI.getCurrent().getLocale()), + applicationContext.getMessage("version.ls.title", null, UI.getCurrent().getLocale()), + false, + 15); inputWindow.addBtnOkListener(text -> { if (text instanceof String && !text.isEmpty()) { if (text != null) { try { - Integer idForm = Integer.valueOf(text); - List listeReponse = getListeReponseDedoublonne(limeSurveyRest.exportResponse(idForm, "fr")); - StringBuilder sb = new StringBuilder(); - sb.append("" + applicationContext.getMessage("version.ls.resultTxt", new Object[] {listeReponse.size()}, UI.getCurrent().getLocale()) + ""); + final Integer idForm = Integer.valueOf(text); + final List listeReponse = getListeReponseDedoublonne(limeSurveyRest.exportResponse(idForm, "fr")); + final StringBuilder sb = new StringBuilder(); + sb.append("" + applicationContext.getMessage("version.ls.resultTxt", new Object[] { listeReponse.size() }, UI.getCurrent().getLocale()) + ""); sb.append("

"); listeReponse.forEach(e -> { sb.append("NumDossier : " + e.getNumDossier() + ", date : " + e.getDatestamp() + "
"); if (e.getMapReponses() != null) { - for (Entry entry : e.getMapReponses().entrySet()) { + for (final Entry entry : e.getMapReponses().entrySet()) { sb.append(entry.getKey() + " : " + entry.getValue() + "
"); } } @@ -408,7 +405,7 @@ public void testConnexionLS() { }); UI.getCurrent().addWindow(new InfoWindow(applicationContext.getMessage("version.ls.result", null, UI.getCurrent().getLocale()), sb.toString(), 500, 40)); - } catch (Exception e) { + } catch (final Exception e) { Notification.show(applicationContext.getMessage("version.ls.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/LdapController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/LdapController.java index d54b4e58..18d41943 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/LdapController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/LdapController.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -28,6 +27,7 @@ import org.springframework.stereotype.Component; import com.vaadin.ui.Notification; +import com.vaadin.ui.UI; import fr.univlorraine.ecandidat.services.ldap.LdapException; import fr.univlorraine.ecandidat.services.ldap.LdapGenericService; @@ -36,58 +36,56 @@ /** * Controller gérant les appels Ldap * @author Kevin Hergalant - * */ @Component public class LdapController { - - /*applicationContext pour les messages*/ + + /* applicationContext pour les messages */ @Resource private transient ApplicationContext applicationContext; - - /*Les services Ldap*/ - @Resource(name="ldapPeopleServiceImpl") + + /* Les services Ldap */ + @Resource(name = "ldapPeopleServiceImpl") private LdapGenericService ldapPeopleService; - + @Value("${ldap.champs.cn}") private String champsCn; - + @Value("${ldap.champs.uid}") private String champsUid; - + @Value("${ldap.filtre.personnel}") private String filtrePersonnel; - - - - /**Rafraichi le container de recherche de people Ldap + + /** + * Rafraichi le container de recherche de people Ldap * @param txt le filtre a appliquer */ - public List getPeopleByFilter(String txt) { - String filtreTotal = "(|("+champsUid+"="+txt+")("+champsCn+"=*"+txt+"*))"; - if (filtrePersonnel!=null && !filtrePersonnel.equals("")){ - filtreTotal = "(&"+filtreTotal+filtrePersonnel+")"; - } - try{ - List l = ldapPeopleService.findEntitiesByFilter(filtreTotal); - if (l==null || l.size()==0){ - Notification.show(applicationContext.getMessage("ldap.search.noresult", null, Locale.getDefault()), Notification.Type.TRAY_NOTIFICATION); - return new ArrayList(); - }else{ - return l.stream().filter(e->e.getUid()!=null).collect(Collectors.toList()); + public List getPeopleByFilter(final String txt) { + String filtreTotal = "(|(" + champsUid + "=" + txt + ")(" + champsCn + "=*" + txt + "*))"; + if (filtrePersonnel != null && !filtrePersonnel.equals("")) { + filtreTotal = "(&" + filtreTotal + filtrePersonnel + ")"; + } + try { + final List l = ldapPeopleService.findEntitiesByFilter(filtreTotal); + if (l == null || l.size() == 0) { + Notification.show(applicationContext.getMessage("ldap.search.noresult", null, UI.getCurrent().getLocale()), Notification.Type.TRAY_NOTIFICATION); + return new ArrayList<>(); + } else { + return l.stream().filter(e -> e.getUid() != null).collect(Collectors.toList()); } - }catch (LdapException e) { - Notification.show(applicationContext.getMessage(e.getMessage(), null, Locale.getDefault()), Notification.Type.TRAY_NOTIFICATION); - return new ArrayList(); - } + } catch (final LdapException e) { + Notification.show(applicationContext.getMessage(e.getMessage(), null, UI.getCurrent().getLocale()), Notification.Type.TRAY_NOTIFICATION); + return new ArrayList<>(); + } } - - /** - * @param uid - * @return Retourne un people par son uid + + /** + * @param uid + * @return Retourne un people par son uid */ - public PeopleLdap findByPrimaryKey(String uid) { - return ldapPeopleService.findByPrimaryKey(uid); + public PeopleLdap findByPrimaryKey(final String uid) { + return ldapPeopleService.findByPrimaryKey(uid); } - + } diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/MailController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/MailController.java index ba7719cb..4990ed77 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/MailController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/MailController.java @@ -310,6 +310,7 @@ private CandidatureMailBean getCandidatureMailBean(final Candidature candidature final CommissionMailBean commissionMailBean = new CommissionMailBean(); commissionMailBean.setLibelle(commission.getLibComm()); commissionMailBean.setTel(commission.getTelComm()); + commissionMailBean.setUrl(commission.getUrlComm()); commissionMailBean.setMail(commission.getMailComm()); commissionMailBean.setFax(commission.getFaxComm()); commissionMailBean.setAdresse(adresseController.getLibelleAdresse(commission.getAdresse(), "
")); @@ -327,8 +328,9 @@ private CandidatureMailBean getCandidatureMailBean(final Candidature candidature * @param text * @param bcc * @param attachement + * @param locale */ - private void sendMail(final String mailTo, final String title, String text, final String bcc, final PdfAttachement attachement) { + private void sendMail(final String mailTo, final String title, String text, final String bcc, final PdfAttachement attachement, final String locale) { try { final MimeMessage message = javaMailService.createMimeMessage(); message.setFrom(new InternetAddress(mailFromNoreply)); @@ -336,8 +338,8 @@ private void sendMail(final String mailTo, final String title, String text, fina if (bcc != null) { message.addRecipient(Message.RecipientType.BCC, new InternetAddress(bcc)); } - message.setSubject(title); - text = text + applicationContext.getMessage("mail.footer", null, Locale.getDefault()); + message.setSubject(title, "utf-8"); + text = text + applicationContext.getMessage("mail.footer", null, locale == null ? new Locale("fr") : new Locale(locale)); message.setHeader("X-Mailer", "Java"); message.setSentDate(new Date()); @@ -419,7 +421,7 @@ public void sendMail(final String mailAdr, final Mail mail, final MailBean bean, bcc = ctrCand.getMailContactCtrCand(); } } - sendMail(mailAdr, sujetMail, contentMail, bcc, attachement); + sendMail(mailAdr, sujetMail, contentMail, bcc, attachement, locale); } /** @@ -571,7 +573,7 @@ public String getVarMailCandidature(final String codMail) { */ public void sendErrorToAdminFonctionnel(final String title, final String text, final Logger loggers) { if (mailToFonctionnel != null && !mailToFonctionnel.equals("") && MethodUtils.isValidEmailAddress(mailToFonctionnel)) { - sendMail(mailToFonctionnel, title, text, null, null); + sendMail(mailToFonctionnel, title, text, null, null, cacheController.getLangueDefault().getCodLangue()); logger.debug(text); } else { logger.error(text); diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/SiScolController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/SiScolController.java index 2e00c4bd..2620dafa 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/SiScolController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/SiScolController.java @@ -99,6 +99,9 @@ public class SiScolController { @Resource private transient BatchController batchController; + @Resource + private transient DemoController demoController; + /* Injection repository ecandidat */ @Resource private transient SiScolUtilisateurRepository siScolUtilisateurRepository; @@ -481,7 +484,12 @@ public void testWSSiScolConnnexion() { if (text instanceof String && !text.isEmpty()) { if (text != null) { try { - final WSIndividu ind = siScolService.getIndividu(text, null, null); + WSIndividu ind; + if (demoController.getDemoMode()) { + ind = demoController.recupInfoEtudiant("0000000000"); + } else { + ind = siScolService.getIndividu(text, null, null); + } String ret = "Pas d'info"; if (ind != null) { ret = "Individu :
" + ind @@ -511,7 +519,7 @@ public void testWSSiScolConnnexion() { public void testWSPJSiScolInfo(final String codEtu, final String codTpj) { try { if (urlWsPjApogee == null || urlWsPjApogee.equals("")) { - Notification.show(applicationContext.getMessage("version.ws.pj.noparam", new Object[] { ConstanteUtils.WS_APOGEE_PJ_SERVICE }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("version.ws.pj.noparam", new Object[] { ConstanteUtils.WS_APOGEE_PJ_URL_SERVICE + ConstanteUtils.WS_APOGEE_SERVICE_SUFFIXE }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } final WSPjInfo info = siScolService.getPjInfoFromApogee(null, codEtu, codTpj); @@ -535,7 +543,7 @@ public void testWSPJSiScolInfo(final String codEtu, final String codTpj) { public OnDemandFile testWSPJSiScolFile(final String codEtu, final String codTpj) { try { if (urlWsPjApogee == null || urlWsPjApogee.equals("")) { - Notification.show(applicationContext.getMessage("version.ws.pj.noparam", new Object[] { ConstanteUtils.WS_APOGEE_PJ_SERVICE }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("version.ws.pj.noparam", new Object[] { ConstanteUtils.WS_APOGEE_PJ_URL_SERVICE + ConstanteUtils.WS_APOGEE_SERVICE_SUFFIXE }, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return null; } final WSPjInfo info = siScolService.getPjInfoFromApogee(null, codEtu, codTpj); diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/TestController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/TestController.java index 5e0fa451..d401934f 100644 --- a/src/main/java/fr/univlorraine/ecandidat/controllers/TestController.java +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/TestController.java @@ -34,6 +34,8 @@ import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Folder; +import org.apache.chemistry.opencmis.client.api.ItemIterable; +import org.apache.chemistry.opencmis.client.api.OperationContext; import org.apache.chemistry.opencmis.client.api.QueryStatement; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; @@ -217,6 +219,39 @@ public Boolean isTestMode() { } public void testMethode() { + final Session cmisSession = getCmisSession(); + + final OperationContext operationContext = getCmisSession().createOperationContext(); + operationContext.setCacheEnabled(false); + + final ItemIterable resultsFolder = cmisSession.queryObjects("cmis:folder", "IN_FOLDER('23a3fe93-566b-4efa-9553-b3f6aa9a351c')", true, operationContext); + System.out.println("Nombre de folders : " + resultsFolder.getTotalNumItems()); +// resultsFolder.forEach(e -> { +//// final Folder folder = (Folder) e; +//// final List liste = folder.deleteTree(true, UnfileObject.DELETE, true); +// System.out.println("Folder : " + e.getName()); +// }); + +// final ItemIterable resultsDoc = cmisSession.queryObjects("cmis:document", "IN_TREE('" + folderCandidatCmis + "')", true, operationContext); +// final ItemIterable resultsFolder = cmisSession.queryObjects("cmis:folder", "IN_TREE('" + folderCandidatCmis + "')", true, operationContext); +// +// System.out.println("Nombre de docs : " + resultsDoc.getTotalNumItems()); +// System.out.println("Nombre de folders : " + resultsFolder.getTotalNumItems()); +// +// resultsDoc.forEach(e -> { +// System.out.println("Doc : " + e.getName()); +// }); +// +// resultsFolder.forEach(e -> { +// System.out.println("Folder : " + e.getName()); +// }); + +// final String queryFolder = "SELECT * FROM cmis:folder WHERE IN_TREE('" + folderCandidatCmis + "')"; +// +// /* Requete CMIS pour rechercher le fichier */ +// final QueryStatement qsF = getCmisSession().createQueryStatement(queryDoc); +// +// System.out.println(qsF.query(true).getTotalNumItems()); //siScolService.creerOpiViaWS(candidatRepository.findOne(62433), true); diff --git a/src/main/java/fr/univlorraine/ecandidat/controllers/TestWsController.java b/src/main/java/fr/univlorraine/ecandidat/controllers/TestWsController.java new file mode 100644 index 00000000..07ea76a1 --- /dev/null +++ b/src/main/java/fr/univlorraine/ecandidat/controllers/TestWsController.java @@ -0,0 +1,310 @@ +/** + * ESUP-Portail eCandidat - 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.ecandidat.controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.ResourceBundle; + +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.Query; + +import org.apache.chemistry.opencmis.client.api.Document; +import org.apache.chemistry.opencmis.client.api.Folder; +import org.apache.chemistry.opencmis.client.api.Session; +import org.apache.chemistry.opencmis.client.api.SessionFactory; +import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; +import org.apache.chemistry.opencmis.commons.SessionParameter; +import org.apache.chemistry.opencmis.commons.enums.BindingType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import fr.univlorraine.ecandidat.entities.ecandidat.Candidature; +import fr.univlorraine.ecandidat.entities.ecandidat.Opi; +import fr.univlorraine.ecandidat.entities.ecandidat.PjOpi; +import fr.univlorraine.ecandidat.entities.ecandidat.PjOpiPK; +import fr.univlorraine.ecandidat.entities.siscol.IndOpi; +import fr.univlorraine.ecandidat.entities.siscol.WSAdresse; +import fr.univlorraine.ecandidat.entities.siscol.WSBac; +import fr.univlorraine.ecandidat.entities.siscol.WSCursusInterne; +import fr.univlorraine.ecandidat.entities.siscol.WSIndividu; +import fr.univlorraine.ecandidat.entities.siscol.WSPjInfo; +import fr.univlorraine.ecandidat.repositories.CandidatureRepository; +import fr.univlorraine.ecandidat.repositories.OpiRepository; +import fr.univlorraine.ecandidat.repositories.PjOpiRepository; +import fr.univlorraine.ecandidat.services.siscol.SiScolGenericService; + +/** + * Gestion de l'entité campagne + * @author Kevin Hergalant + */ +@Component +public class TestWsController { + private final Logger logger = LoggerFactory.getLogger(TestWsController.class); + + /* Le service SI Scol */ + @Resource(name = "${siscol.implementation}") + private SiScolGenericService siScolService; + + @Resource + private transient CandidatureRepository candidatureRepository; + + @Resource + private transient OpiRepository opiRepository; + + @Resource + private transient PjOpiRepository pjOpiRepository; + + private Session cmisSession; + + @SuppressWarnings("unchecked") + public void testWs() throws IOException { + final EntityManagerFactory emf = Persistence.createEntityManagerFactory("pun-jpa-siscol"); + final EntityManager em = emf.createEntityManager(); + final ResourceBundle bundle = ResourceBundle.getBundle("test-ws"); + final String codOpi = bundle.getString("opi.codOpi"); + try { + logger.info("********** Vérifications OPI **********"); + final Candidature candOpi = candidatureRepository.findOne(Integer.valueOf(bundle.getString("opi.idCand"))); + if (countOpiData(em, "IND_OPI", codOpi) > 0) { + throw new RuntimeException("Impossible de lancer les tests, nettoyez d'abord les OPI"); + } + logger.info("********** Vérifications OPI terminée, lancement des tests **********"); + + /* Données individu */ + logger.info("********** Test Données individu **********"); + final String codEtu = bundle.getString("ind.codEtu"); + final WSIndividu ind = siScolService.getIndividu(codEtu, null, null); + checkString(bundle, String.valueOf(ind.getCodEtu()), "ind.codEtu"); + checkString(bundle, String.valueOf(ind.getCodInd()), "ind.codInd"); + checkString(bundle, ind.getCodNneInd(), "ind.codNneInd"); + checkString(bundle, ind.getCodCleNneInd(), "ind.codCleNneInd"); + checkString(bundle, ind.getCodPayNai(), "ind.codPayNai"); + checkString(bundle, ind.getCodDepNai(), "ind.codDepNai"); + checkString(bundle, ind.getCodPayNat(), "ind.codPayNat"); + checkString(bundle, ind.getLibNomPatInd(), "ind.libNomPatInd"); + checkString(bundle, ind.getLibNomUsuInd(), "ind.libNomUsuInd"); + checkString(bundle, ind.getLibPr1Ind(), "ind.libPr1Ind"); + checkString(bundle, ind.getLibPr2Ind(), "ind.libPr2Ind"); + checkString(bundle, ind.getLibVilNaiEtu(), "ind.libVilNaiEtu"); + + /* Données bac */ + logger.info("********** Test Données bac **********"); + final WSBac bac = ind.getBac(); + checkString(bundle, bac.getCodBac(), "bac.codBac"); + checkString(bundle, bac.getCodDep(), "bac.codDep"); + checkString(bundle, bac.getCodEtb(), "bac.codEtb"); + checkString(bundle, bac.getCodMnb(), "bac.codMnb"); + checkString(bundle, bac.getDaaObtBacIba(), "bac.daaObtBacIba"); + checkString(bundle, bac.getTemInsAdm(), "bac.temInsAdm"); + + /* Données Adresse */ + logger.info("********** Test Données adresse **********"); + final WSAdresse adr = ind.getAdresse(); + checkString(bundle, adr.getCodBdi(), "adr.codBdi"); + checkString(bundle, adr.getCodCom(), "adr.codCom"); + checkString(bundle, adr.getCodPay(), "adr.codPay"); + checkString(bundle, adr.getLibAd1(), "adr.libAd1"); + checkString(bundle, adr.getLibAd2(), "adr.libAd2"); + checkString(bundle, adr.getLibAd3(), "adr.libAd3"); + checkString(bundle, adr.getLibAde(), "adr.libAde"); + checkString(bundle, adr.getNumTel(), "adr.numTel"); + checkString(bundle, adr.getNumTelPort(), "adr.numTelPort"); + + /* Données Cursus (test de la taille de liste et de la premiere inscription) */ + logger.info("********** Test Données Cursus interne **********"); + final List listCursus = ind.getListCursusInterne(); + checkString(bundle, String.valueOf(listCursus.size()), "cursus.size"); + final WSCursusInterne cursus = listCursus.get(0); + checkString(bundle, cursus.getCodVet(), "cursus.codVet"); + checkString(bundle, cursus.getLibVet(), "cursus.libVet"); + checkString(bundle, cursus.getCodAnu(), "cursus.codAnu"); + checkString(bundle, cursus.getCodMen(), "cursus.codMen"); + checkString(bundle, cursus.getCodTre(), "cursus.codTre"); + checkString(bundle, cursus.getNotVet(), "cursus.notVet"); + checkString(bundle, String.valueOf(cursus.getBarNotVet()), "cursus.barNotVet"); + + /* Données PJ */ + logger.info("********** Test Données PJ **********"); + final WSPjInfo pjInfo = siScolService.getPjInfoFromApogee(bundle.getString("pj.codAnu"), bundle.getString("pj.codEtu"), bundle.getString("pj.codTpj")); + checkString(bundle, pjInfo.getCodAnu(), "pj.codAnu"); + checkString(bundle, pjInfo.getCodTpj(), "pj.codTpj"); + checkString(bundle, pjInfo.getLibTpj(), "pj.libTpj"); + checkString(bundle, pjInfo.getNomFic(), "pj.nomFic"); + checkString(bundle, String.valueOf(pjInfo.getTemDemPJ()), "pj.temDemPJ"); + checkString(bundle, pjInfo.getStuPj(), "pj.stuPj"); + checkString(bundle, pjInfo.getMtfRefus(), "pj.mtfRefus"); + checkString(bundle, pjInfo.getCmtMtfRefus(), "pj.cmtMtfRefus"); + checkString(bundle, pjInfo.getDatDemPj(), "pj.datDemPj"); + checkString(bundle, pjInfo.getDatRecPj(), "pj.datRecPj"); + checkString(bundle, pjInfo.getDatRefus(), "pj.datRefus"); + checkString(bundle, pjInfo.getDatVal(), "pj.datVal"); + checkString(bundle, pjInfo.getDatExp(), "pj.datExp"); + checkString(bundle, pjInfo.getDaaPreTra(), "pj.daaPreTra"); + + /* Données PJ */ + logger.info("********** Test Fichier PJ **********"); + final InputStream pjFichier = siScolService.getPjFichierFromApogee(bundle.getString("pj.codAnu"), bundle.getString("pj.codEtu"), bundle.getString("pj.codTpj")); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final byte[] bytes = new byte[1024]; + int count; + while ((count = pjFichier.read(bytes)) > 0) { + out.write(bytes, 0, count); + } + checkString(bundle, String.valueOf(out.size()), "filepj.size"); + + logger.info("********** Test OPI **********"); + final Opi opi = opiRepository.findOne(candOpi.getIdCand()); + opi.setDatPassageOpi(null); + opi.setCodOpi(null); + opiRepository.save(opi); + + final PjOpiPK pk = new PjOpiPK(bundle.getString("opi.codOpi"), bundle.getString("opi.codTpj")); + final PjOpi pj = pjOpiRepository.findOne(pk); + pj.setDatDeversement(null); + pjOpiRepository.save(pj); + + siScolService.creerOpiViaWS(candOpi.getCandidat(), true); + + logger.info("********** Vérification OPI **********"); + checkOpiData(em, "IND_OPI", codOpi); + checkOpiData(em, "OPI_BAC", codOpi); + checkOpiData(em, "VOEUX_INS", codOpi); + checkOpiData(em, "ADRESSE_OPI", codOpi); + checkOpiData(em, "OPI_PJ", codOpi); + + logger.info("********** Vérification OPI PJ **********"); + final String requete = "Select a from IndOpi a where a.codOpiIntEpo='" + codOpi + "'"; + final Query query = em.createQuery(requete, IndOpi.class); + final List lindopi = query.getResultList(); + final IndOpi indOpi = lindopi.get(0); + + final Session cmisSession = getCmisSession(bundle); + final Folder folder = (Folder) cmisSession.getObject(cmisSession.createObjectId(bundle.getString("opi.pj.candidatureId"))); + final String pathDoc = folder.getPath() + "/" + indOpi.getCodIndOpi() + "_OPI/PJ_" + bundle.getString("pj.codTpj") + "_" + indOpi.getCodIndOpi() + bundle.getString("opi.pj.ext"); + logger.info("Recherche par path : " + pathDoc); + + final Document d = (Document) cmisSession.getObjectByPath(pathDoc); + checkString(bundle, String.valueOf(d.getContentStreamLength()), "opi.pj.size"); + + logger.info("********** Vérifications Checkine **********"); + final Boolean isInes = siScolService.checkStudentINES(bundle.getString("checkine.ine"), bundle.getString("checkine.key")); + if (!isInes) { + throw new RuntimeException("Checkines ne fonctionne pas"); + } else { + logger.info("Ok - " + bundle.getString("checkine.ine") + bundle.getString("checkine.key")); + } + + } catch (final Exception e) { + e.printStackTrace(); + } finally { + em.close(); + } + } + + /** + * Verifie le nombre d'une ligne d'une requete OPI + * @param em + * @param table + * @param codOpi + */ + private void checkOpiData(final EntityManager em, final String table, final String codOpi) { + final Integer count = countOpiData(em, "IND_OPI", codOpi); + final String log = "table = " + table + " - codOpi = " + codOpi + " - Nombre de lignes trouvées = " + count; + if (count.equals(1)) { + logger.info("Ok - " + log); + return; + } + throw new RuntimeException("Erreur vérif OPI - " + log); + } + + /** + * @param em + * @param table + * @param codOpi + * @return le nombre de lignes d'une table OPI + */ + private Integer countOpiData(final EntityManager em, final String table, final String codOpi) { + final String requete = "select count(*) from APOGEE." + table + " where COD_IND_OPI = (select COD_IND_OPI from APOGEE.IND_OPI where COD_OPI_INT_EPO = '" + codOpi + "')"; + final Query query = em.createNativeQuery(requete); + final int count = ((Number) query.getSingleResult()).intValue(); + return count; + } + + /** + * Verifie le retour du WS avec le fichier properties + * @param bundle + * @param str + * @param codBundle + */ + private void checkString(final ResourceBundle bundle, final String str, final String codBundle) { + final String value = bundle.getString(codBundle); + final String log = "codeBundle = " + codBundle + ", valBundle = " + value + ", valeur = " + str; + + if (value.equals("null") && str == null) { + logger.info("Ok - " + log); + return; + } + + if (Objects.equals(str, value)) { + logger.info("Ok - " + log); + return; + } + + throw new RuntimeException("Erreur - " + log); + } + + /** @return la session CMIS */ + public Session getCmisSession(final ResourceBundle bundle) { + if (cmisSession == null) { + cmisSession = cmisSession(bundle); + } + return cmisSession; + } + + /** @return la session CMIS */ + private Session cmisSession(final ResourceBundle bundle) { + try { + // default factory implementation + final SessionFactory factory = SessionFactoryImpl.newInstance(); + final Map parameter = new HashMap<>(); + + // user credentials + parameter.put(SessionParameter.USER, bundle.getString("opi.pj.user")); + parameter.put(SessionParameter.PASSWORD, bundle.getString("opi.pj.pwd")); + + // connection settings + parameter.put(SessionParameter.ATOMPUB_URL, bundle.getString("opi.pj.url")); + parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); + parameter.put(SessionParameter.REPOSITORY_ID, bundle.getString("opi.pj.repository")); + // create session + return factory.createSession(parameter); + } catch (final Exception e) { + logger.error("Stockage de fichier - Impossible de se connecter au serveur de fichier CMIS", e); + return null; + } + } +} diff --git a/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/CentreCandidature.java b/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/CentreCandidature.java index 25128e81..39991911 100644 --- a/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/CentreCandidature.java +++ b/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/CentreCandidature.java @@ -51,7 +51,7 @@ @EntityListeners(EntityPushEntityListener.class) @Data @EqualsAndHashCode(of = "idCtrCand") -@ToString(of = {"idCtrCand", "codCtrCand", "libCtrCand", "tesCtrCand"}) +@ToString(of = { "idCtrCand", "codCtrCand", "libCtrCand", "tesCtrCand" }) @SuppressWarnings("serial") public class CentreCandidature implements Serializable { @@ -208,18 +208,18 @@ public class CentreCandidature implements Serializable { @PrePersist private void onPrePersist() { - this.datCreCtrCand = LocalDateTime.now(); - this.datModCtrCand = LocalDateTime.now(); + datCreCtrCand = LocalDateTime.now(); + datModCtrCand = LocalDateTime.now(); } @PreUpdate private void onPreUpdate() { - this.datModCtrCand = LocalDateTime.now(); + datModCtrCand = LocalDateTime.now(); } /** @return le libellé à afficher dans la listBox */ public String getGenericLibelle() { - return this.codCtrCand + "/" + this.libCtrCand; + return codCtrCand + "/" + libCtrCand; } public CentreCandidature() { @@ -228,17 +228,17 @@ public CentreCandidature() { public CentreCandidature(final String user, final TypeDecision typeDecDefault, final Integer nbVoeuxDefaut, final Boolean temDemat) { super(); - this.userCreCtrCand = user; - this.userModCtrCand = user; - this.typeDecisionFavListComp = null; - this.typeDecisionFav = typeDecDefault; - this.nbMaxVoeuxCtrCand = nbVoeuxDefaut; - this.tesCtrCand = false; - this.temListCompCtrCand = false; - this.temDematCtrCand = temDemat; - this.datDebDepotCtrCand = LocalDate.now(); - this.datFinDepotCtrCand = LocalDate.now(); - this.datRetourCtrCand = LocalDate.now(); + userCreCtrCand = user; + userModCtrCand = user; + typeDecisionFavListComp = null; + typeDecisionFav = typeDecDefault; + nbMaxVoeuxCtrCand = nbVoeuxDefaut; + tesCtrCand = false; + temListCompCtrCand = false; + temDematCtrCand = temDemat; + datDebDepotCtrCand = LocalDate.now(); + datFinDepotCtrCand = LocalDate.now(); + datRetourCtrCand = LocalDate.now(); } diff --git a/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/Commission.java b/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/Commission.java index e52b3160..70700791 100644 --- a/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/Commission.java +++ b/src/main/java/fr/univlorraine/ecandidat/entities/ecandidat/Commission.java @@ -96,11 +96,19 @@ public class Commission implements Serializable { @NotNull private String libComm; - @Column(name = "mail_comm", nullable = false, length = 80) + @Column(name = "mail_comm", nullable = true, length = 80) @Size(max = 80) - @NotNull private String mailComm; + @Column(name = "mail_alert_comm", nullable = false, length = 80) + @Size(max = 80) + @NotNull + private String mailAlertComm; + + @Column(name = "url_comm", nullable = true, length = 255) + @Size(max = 255) + private String urlComm; + @Column(name = "signataire_comm", length = 255) @Size(max = 255) private String signataireComm; diff --git a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManager.java b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManager.java index 7a9423a3..1cea4270 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManager.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManager.java @@ -27,62 +27,66 @@ public interface FileManager extends Serializable { /** @return le type de dematerialisation */ - public String getType(); + String getType(); /** test le mode de dematerialisation */ - public Boolean testSession(); + Boolean testSession(); - /** Creéé un fichier provenant d'une fenetre d'upload - * - * @param file - * @param mimeType - * @param filename - * @param length - * @param typeFichier - * @param prefixe - * @param candidature - * @param commune - * @return le fichier + /** + * Creéé un fichier provenant d'une fenetre d'upload + * @param file + * @param mimeType + * @param filename + * @param length + * @param typeFichier + * @param prefixe + * @param candidature + * @param commune + * @return le fichier * @throws FileException */ - public FileCustom createFileFromUpload(ByteArrayInOutStream file, String mimeType, String filename, long length, String typeFichier, String prefixe, Candidature candidature, Boolean commune) - throws FileException; + FileCustom createFileFromUpload(ByteArrayInOutStream file, String mimeType, String filename, long length, String typeFichier, String prefixe, Candidature candidature, Boolean commune) + throws FileException; - /** Supprime un fichier - * - * @param fichier - * @param sendErrorLog - * si une erreur est loguée + /** + * Supprime un fichier + * @param fichier + * @param sendErrorLog + * si une erreur est loguée * @throws FileException */ - public void deleteFile(Fichier fichier, Boolean sendErrorLog) throws FileException; + void deleteFile(Fichier fichier, Boolean sendErrorLog) throws FileException; - /** Recupere un flux permettant de telecharger un fichier - * - * @param file - * @return l'InputStream du fichier + /** + * Recupere un flux permettant de telecharger un fichier + * @param file + * @return l'InputStream du fichier * @throws FileException */ - public InputStream getInputStreamFromFile(Fichier file, Boolean logAction) throws FileException; + InputStream getInputStreamFromFile(Fichier file, Boolean logAction) throws FileException; - /** @param file - * @return true si le fichier exist + /** + * @param file + * @return true si le fichier exist * @throws FileException */ - public Boolean existFile(Fichier file) throws FileException; + Boolean existFile(Fichier file) throws FileException; - /** Supprime le dossier de la campagne - * - * @param codCampagne - * @return true si ok */ - public Boolean deleteCampagneFolder(String codCampagne); + /** + * Supprime le dossier de la campagne + * @param codCampagne + * @return true si ok + * @throws FileException + */ + Boolean deleteCampagneFolder(String codCampagne) throws FileException; - /** @param pjOpi - * @param file - * @param complementLog - * @return true si le fichier existe + /** + * @param pjOpi + * @param file + * @param complementLog + * @return true si le fichier existe * @throws FileException */ - public Boolean isFileCandidatureOpiExist(final PjOpi pjOpi, final Fichier file, final String complementLog) throws FileException; + Boolean isFileCandidatureOpiExist(final PjOpi pjOpi, final Fichier file, final String complementLog) throws FileException; } diff --git a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerCmisImpl.java b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerCmisImpl.java index d1de6d0d..e6f9d07d 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerCmisImpl.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerCmisImpl.java @@ -19,6 +19,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.math.BigInteger; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -28,6 +29,8 @@ import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Document; import org.apache.chemistry.opencmis.client.api.Folder; +import org.apache.chemistry.opencmis.client.api.ItemIterable; +import org.apache.chemistry.opencmis.client.api.OperationContext; import org.apache.chemistry.opencmis.client.api.QueryStatement; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.client.api.SessionFactory; @@ -60,25 +63,22 @@ /** * Class d'implementation de l'interface de manager de fichier pour CMIS - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @Component(value = "fileManagerCmisImpl") public class FileManagerCmisImpl implements FileManager { - private Logger logger = LoggerFactory.getLogger(FileManagerCmisImpl.class); + private final Logger logger = LoggerFactory.getLogger(FileManagerCmisImpl.class); /* applicationContext pour les messages */ @Resource private transient ApplicationContext applicationContext; /* La session CMIS */ - /* - * CMIS itself is stateless. OpenCMIS uses the concept of a session to cache data across calls and to deal with user authentication. + /* CMIS itself is stateless. OpenCMIS uses the concept of a session to cache data across calls and to deal with user authentication. * The session object is also used as entry point to all CMIS operations and objects. - * Because a session is only a client side concept, the session object needs not to be closed or released when it's not needed anymore. - **/ + * Because a session is only a client side concept, the session object needs not to be closed or released when it's not needed anymore. **/ private Session cmisSession; /* Les informations de context */ @@ -98,7 +98,6 @@ public FileManagerCmisImpl() { /** * Constructeur et affectation des variables - * * @param user * @param password * @param url @@ -107,8 +106,14 @@ public FileManagerCmisImpl() { * @param idFolderCandidat * @param enableVersioningCmis */ - public FileManagerCmisImpl(final String user, final String password, final String url, final String repository, final String idFolderGestionnaire, - final String idFolderCandidat, final String idFolderApoCandidature, final Boolean enableVersioningCmis) { + public FileManagerCmisImpl(final String user, + final String password, + final String url, + final String repository, + final String idFolderGestionnaire, + final String idFolderCandidat, + final String idFolderApoCandidature, + final Boolean enableVersioningCmis) { super(); this.user = user; this.password = password; @@ -136,8 +141,8 @@ private Session cmisSession() { try { // default factory implementation - SessionFactory factory = SessionFactoryImpl.newInstance(); - Map parameter = new HashMap<>(); + final SessionFactory factory = SessionFactoryImpl.newInstance(); + final Map parameter = new HashMap<>(); // user credentials parameter.put(SessionParameter.USER, user); @@ -148,7 +153,7 @@ private Session cmisSession() { parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); parameter.put(SessionParameter.REPOSITORY_ID, repository); // create session - Session session = factory.createSession(parameter); + final Session session = factory.createSession(parameter); if (session == null) { logger.error("Stockage de fichier - Impossible de se connecter au serveur de fichier CMIS"); return null; @@ -158,7 +163,7 @@ private Session cmisSession() { } } return null; - } catch (Exception e) { + } catch (final Exception e) { logger.error("Stockage de fichier - Impossible de se connecter au serveur de fichier CMIS", e); return null; } @@ -166,10 +171,10 @@ private Session cmisSession() { @Override public Boolean testSession() { - Session cmisSession = cmisSession(); + final Session cmisSession = cmisSession(); if (cmisSession != null) { - Boolean testGest = directoryExistCMIS(idFolderGestionnaire, getCmisSession()); - Boolean testCand = directoryExistCMIS(idFolderCandidat, getCmisSession()); + final Boolean testGest = directoryExistCMIS(idFolderGestionnaire, getCmisSession()); + final Boolean testCand = directoryExistCMIS(idFolderCandidat, getCmisSession()); if (!testGest || !testCand) { return false; } @@ -180,8 +185,7 @@ public Boolean testSession() { /** * Verifie qu'un dossier existe en mode CMIS - * - * @param idFolder + * @param idFolder * @return */ private Boolean directoryExistCMIS(final String idFolder, final Session cmisSession) { @@ -189,12 +193,12 @@ private Boolean directoryExistCMIS(final String idFolder, final Session cmisSess return false; } try { - CmisObject object = cmisSession.getObject(cmisSession.createObjectId(idFolder)); + final CmisObject object = cmisSession.getObject(cmisSession.createObjectId(idFolder)); if (!(object instanceof Folder)) { logger.error("Stockage de fichier - CMIS : l'object CMIS " + idFolder + " n'est pas un dossier"); return false; } - } catch (Exception e) { + } catch (final Exception e) { logger.error("Stockage de fichier - CMIS : erreur sur l'object CMIS " + idFolder, e); return false; } @@ -208,41 +212,41 @@ public String getType() { } /** - * @param id - * @return l'objet CMIS par son id + * @param id + * @return l'objet CMIS par son id * @throws FileException * @throws NoSuchMessageException */ public CmisObject getObjectById(final String id) { - Session session = getCmisSession(); - CmisObject object = session.getObject(session.createObjectId(id)); + final Session session = getCmisSession(); + final CmisObject object = session.getObject(session.createObjectId(id)); return object; } /** - * @return le folder CMIS des candidat + * @return le folder CMIS des candidat * @throws FileException * @throws NoSuchMessageException */ public Folder getFolderCandidat() throws NoSuchMessageException, FileException { - CmisObject object = getObjectById(idFolderCandidat); - Folder folder = (Folder) object; + final CmisObject object = getObjectById(idFolderCandidat); + final Folder folder = (Folder) object; return folder; } /** - * @return le folder CMIS des gestionnaires + * @return le folder CMIS des gestionnaires * @throws FileException * @throws NoSuchMessageException */ public Folder getFolderGestionnaire() throws NoSuchMessageException, FileException { - CmisObject object = getObjectById(idFolderGestionnaire); - Folder folder = (Folder) object; + final CmisObject object = getObjectById(idFolderGestionnaire); + final Folder folder = (Folder) object; return folder; } /** - * @return le folder CMIS des candidatures sur apogee + * @return le folder CMIS des candidatures sur apogee * @throws FileException * @throws NoSuchMessageException */ @@ -250,16 +254,15 @@ public Folder getFolderApoCandidature() throws NoSuchMessageException, FileExcep if (idFolderApoCandidature == null || idFolderApoCandidature.equals("")) { return null; } - CmisObject object = getObjectById(idFolderApoCandidature); - Folder folder = (Folder) object; + final CmisObject object = getObjectById(idFolderApoCandidature); + final Folder folder = (Folder) object; return folder; } /** * Renvoi un customFile a partir d'un document cmis - * - * @param doc - * @return le fichier + * @param doc + * @return le fichier */ private FileCustom getFileFromDoc(final Document doc, final String fileName, final String cod) { return new FileCustom(doc.getId(), cod, fileName, doc.getContentStreamMimeType()); @@ -267,23 +270,22 @@ private FileCustom getFileFromDoc(final Document doc, final String fileName, fin /** * Vérifie si l'arborescence demandée existe, sinon, la créé - * - * @param candidature - * @param isPjCommune - * @return le folder folderCandidat/CodCamp/NumDossierOpiCptMin/CodFor + * @param candidature + * @param isPjCommune + * @return le folder folderCandidat/CodCamp/NumDossierOpiCptMin/CodFor * @throws FileException */ public Folder getFolderCandidature(final Candidature candidature, final Boolean isPjCommune) throws FileException { try { /* Recuperation des noms de dossier */ - String codCampagne = candidature.getCandidat().getCompteMinima().getCampagne().getCodCamp(); - String noDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); + final String codCampagne = candidature.getCandidat().getCompteMinima().getCampagne().getCodCamp(); + final String noDossier = candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin(); String codFormationOuCommune = candidature.getFormation().getCodForm(); - Session session = getCmisSession(); + final Session session = getCmisSession(); /* Dossier de base pour les candidats */ - Folder master = getFolderCandidat(); + final Folder master = getFolderCandidat(); /* On défini les 3 dossier qu'on aura éventuellement à créer */ Folder folderCampagne; @@ -320,21 +322,28 @@ public Folder getFolderCandidature(final Candidature candidature, final Boolean } /** - * @see fr.univlorraine.ecandidat.services.file.FileManager#createFileFromUpload(fr.univlorraine.ecandidat.utils.ByteArrayInOutStream, java.lang.String, java.lang.String, long, java.lang.String, + * @see fr.univlorraine.ecandidat.services.file.FileManager#createFileFromUpload(fr.univlorraine.ecandidat.utils.ByteArrayInOutStream, java.lang.String, + * java.lang.String, long, java.lang.String, * java.lang.String, fr.univlorraine.ecandidat.entities.ecandidat.Candidature, java.lang.Boolean) */ @Override - public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final String mimeType, final String filename, - final long length, final String typeFichier, final String prefixe, final Candidature candidature, final Boolean commune) throws FileException { + public FileCustom createFileFromUpload(final ByteArrayInOutStream file, + final String mimeType, + final String filename, + final long length, + final String typeFichier, + final String prefixe, + final Candidature candidature, + final Boolean commune) throws FileException { ByteArrayInputStream bis = null; try { - String name = prefixe + "_" + filename; - Map properties = new HashMap<>(); + final String name = prefixe + "_" + filename; + final Map properties = new HashMap<>(); properties.put(PropertyIds.OBJECT_TYPE_ID, BaseTypeId.CMIS_DOCUMENT.value()); properties.put(PropertyIds.NAME, name); bis = file.getInputStream(); - ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(length), mimeType, bis); + final ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(length), mimeType, bis); Folder master; if (typeFichier.equals(ConstanteUtils.TYPE_FICHIER_GESTIONNAIRE)) { master = getFolderGestionnaire(); @@ -348,9 +357,9 @@ public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final St versioningState = VersioningState.MINOR; } - Document d = master.createDocument(properties, contentStream, versioningState); + final Document d = master.createDocument(properties, contentStream, versioningState); return getFileFromDoc(d, filename, prefixe); - } catch (Exception e) { + } catch (final Exception e) { // Suppression de l'erreur org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: Bad Gateway if (!MethodUtils.checkExceptionAndMessage(e, CmisRuntimeException.class, ConstanteUtils.CMIS_ERROR_BAD_GATEWAY)) { logger.error("Stockage de fichier - CMIS : erreur de creation du fichier ", e); @@ -367,9 +376,9 @@ public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final St @Override public void deleteFile(final Fichier fichier, final Boolean sendErrorLog) throws FileException { try { - Document doc = (Document) getObjectById(fichier.getFileFichier()); + final Document doc = (Document) getObjectById(fichier.getFileFichier()); doc.delete(true); - } catch (Exception e) { + } catch (final Exception e) { if (sendErrorLog) { logger.error("Stockage de fichier - CMIS : erreur de suppression du fichier ", e); } @@ -381,13 +390,13 @@ public void deleteFile(final Fichier fichier, final Boolean sendErrorLog) throws @Override public InputStream getInputStreamFromFile(final Fichier file, final Boolean logAction) throws FileException { try { - Document doc = (Document) getObjectById(file.getFileFichier()); + final Document doc = (Document) getObjectById(file.getFileFichier()); return doc.getContentStream().getStream(); - } catch (Exception e) { + } catch (final Exception e) { if (logAction) { logger.error("Stockage de fichier - CMIS : erreur de recuperation du fichier ", e); } - throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] {file.getNomFichier()}, UI.getCurrent().getLocale()), e); + throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] { file.getNomFichier() }, UI.getCurrent().getLocale()), e); } } @@ -395,64 +404,98 @@ public InputStream getInputStreamFromFile(final Fichier file, final Boolean logA @Override public Boolean existFile(final Fichier file) throws FileException { try { - Session session = getCmisSession(); + final Session session = getCmisSession(); return session.exists(file.getFileFichier()); - } catch (CmisObjectNotFoundException e) { + } catch (final CmisObjectNotFoundException e) { return false; - } catch (Exception ex) { - throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] {file.getNomFichier()}, UI.getCurrent().getLocale()), ex); + } catch (final Exception ex) { + throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] { file.getNomFichier() }, UI.getCurrent().getLocale()), ex); } } - /** @see fr.univlorraine.ecandidat.services.file.FileManager#deleteCampagneFolder(java.lang.String) */ + /** + * @throws FileException + * @see fr.univlorraine.ecandidat.services.file.FileManager#deleteCampagneFolder(java.lang.String) + */ @Override - public Boolean deleteCampagneFolder(final String codCampagne) { - logger.debug("Suppression du dossier de campagne : " + codCampagne); - Session session = getCmisSession(); + public Boolean deleteCampagneFolder(final String codCampagne) throws FileException { + logger.info("Suppression du dossier de campagne : " + codCampagne); + final Session session = getCmisSession(); try { /* Dossier de base pour les candidats */ - Folder master = getFolderCandidat(); + final Folder master = getFolderCandidat(); /* Le dossier de la campagne */ - Folder folderCampagne = FileUtils.getFolder(master.getPath() + "/" + codCampagne, session); - logger.debug("Suppression du dossier de campagne, path=" + folderCampagne.getPath() + ", id=" + folderCampagne.getId()); - List liste = folderCampagne.deleteTree(true, UnfileObject.DELETE, true); + final Folder folderCampagne = FileUtils.getFolder(master.getPath() + "/" + codCampagne, session); + logger.info("Suppression du dossier de campagne, path=" + folderCampagne.getPath() + ", id=" + folderCampagne.getId()); + + /* Suppression des folder encore contenu dans ce repertoire */ + final OperationContext operationContext = getCmisSession().createOperationContext(); + operationContext.setCacheEnabled(false); + + final ItemIterable resultsFolder = cmisSession.queryObjects("cmis:folder", "IN_FOLDER('" + folderCampagne.getId() + "')", true, operationContext); + logger.info("Suppression du dossier de campagne, nombre de folder a supprimer " + resultsFolder.getTotalNumItems()); + final List listFolderToDelete = new ArrayList<>(); + + /* Stockage dans une liste pour meilleure utilisation */ + resultsFolder.forEach(e -> { + listFolderToDelete.add((Folder) e); + }); + logger.info("Suppression du dossier de campagne, fin de lecture des folder : " + listFolderToDelete.size() + " folder a supprimer"); + + Integer i = 0; + Integer cpt = 0; + for (final Folder folder : listFolderToDelete) { + folder.deleteTree(true, UnfileObject.DELETE, true); + i++; + cpt++; + if (i.equals(ConstanteUtils.BATCH_LOG_NB_SHORT)) { + logger.info("Suppression du dossier de campagne, destruction de " + cpt + " folder ok"); + i = 0; + } + } + + /* On termine par la suppression du dossier racine */ + final List liste = folderCampagne.deleteTree(true, UnfileObject.DELETE, true); if (liste != null && liste.size() > 0) { - return false; + logger.info("Suppression du dossier de campagne, nombre d'erreur > 0"); + throw new FileException("Suppression du dossier de campagne, nombre d'erreur > 0"); } + logger.info("Suppression du dossier de campagne, fin du traitement"); return true; - } catch (Exception e) { - logger.error("Impossible de supprimer le dossier de campagne : " + codCampagne + ", vous devez le supprimer à la main", e); - return false; + } catch (final Exception e) { + logger.error("Impossible de supprimer le dossier de campagne : " + codCampagne, e); + throw new FileException(e); } } /** - * @see fr.univlorraine.ecandidat.services.file.FileManager#isFileCandidatureOpiExist(fr.univlorraine.ecandidat.entities.ecandidat.PjOpi, fr.univlorraine.ecandidat.entities.ecandidat.Fichier, + * @see fr.univlorraine.ecandidat.services.file.FileManager#isFileCandidatureOpiExist(fr.univlorraine.ecandidat.entities.ecandidat.PjOpi, + * fr.univlorraine.ecandidat.entities.ecandidat.Fichier, * java.lang.String) */ @Override public Boolean isFileCandidatureOpiExist(final PjOpi pjOpi, final Fichier file, final String complementLog) throws FileException { - Session session = getCmisSession(); + final Session session = getCmisSession(); try { /* Dossier de base pour les candidats */ - Folder master = getFolderApoCandidature(); + final Folder master = getFolderApoCandidature(); if (master == null) { return null; } /* Dossier de base pour l'ind_opi */ - Folder folderCandidat = FileUtils.getFolder(MethodUtils.getFolderOpiPjPath(master.getPath(), pjOpi.getCodIndOpi()), session); + final Folder folderCandidat = FileUtils.getFolder(MethodUtils.getFolderOpiPjPath(master.getPath(), pjOpi.getCodIndOpi()), session); /* Nom du fichier à rechercher */ - String nomFichier = MethodUtils.getFileOpiPj(pjOpi.getId().getCodApoPj(), pjOpi.getCodIndOpi()); + final String nomFichier = MethodUtils.getFileOpiPj(pjOpi.getId().getCodApoPj(), pjOpi.getCodIndOpi()); /* Requete CMIS pour rechercher le fichier */ - QueryStatement qs = session.createQueryStatement("SELECT * FROM cmis:document WHERE IN_FOLDER(?) AND cmis:name LIKE ?"); + final QueryStatement qs = session.createQueryStatement("SELECT * FROM cmis:document WHERE IN_FOLDER(?) AND cmis:name LIKE ?"); qs.setId(1, folderCandidat); qs.setString(2, nomFichier + "%"); /* True si la requete ramene plus de 0 resultats */ return qs.query(true).getTotalNumItems() > 0; - } catch (Exception e) { + } catch (final Exception e) { throw new FileException(e); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerFileSystemImpl.java b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerFileSystemImpl.java index 24155062..16c38535 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerFileSystemImpl.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/file/FileManagerFileSystemImpl.java @@ -49,14 +49,13 @@ /** * Class d'implementation de l'interface de manager de fichier pour le File System - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @Component(value = "fileManagerFileSystemImpl") public class FileManagerFileSystemImpl implements FileManager { - private Logger logger = LoggerFactory.getLogger(FileManagerFileSystemImpl.class); + private final Logger logger = LoggerFactory.getLogger(FileManagerFileSystemImpl.class); /* applicationContext pour les messages */ @Resource @@ -77,7 +76,6 @@ public FileManagerFileSystemImpl() { /** * Constructeur et affectation des variables - * * @param folderGestionnaire * @param folderCandidat */ @@ -97,27 +95,26 @@ public String getType() { /** @see fr.univlorraine.ecandidat.services.file.FileManager#testSession() */ @Override public Boolean testSession() { - Boolean testGest = directoryExistFileSystem(folderCandidat); - Boolean testCand = directoryExistFileSystem(folderCandidat); + final Boolean testGest = directoryExistFileSystem(folderCandidat); + final Boolean testCand = directoryExistFileSystem(folderCandidat); if (!testGest || !testCand) { return false; } return true; } - /* - * (non-Javadoc) - * @see fr.univlorraine.ecandidat.services.file.FileManager#deleteFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier, java.lang.Boolean) - */ + /* (non-Javadoc) + * + * @see fr.univlorraine.ecandidat.services.file.FileManager#deleteFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier, java.lang.Boolean) */ @Override public void deleteFile(final Fichier fichier, final Boolean sendErrorLog) throws FileException { - String path = getFilePath(fichier); + final String path = getFilePath(fichier); try { - File file = new File(path); + final File file = new File(path); if (file == null || !file.delete()) { throw new FileException(applicationContext.getMessage("file.error.delete", null, MethodUtils.getLocale())); } - } catch (Exception e) { + } catch (final Exception e) { if (sendErrorLog) { logger.error("Stockage de fichier - FileSystem : erreur de suppression du fichier : " + path, e); } @@ -125,32 +122,37 @@ public void deleteFile(final Fichier fichier, final Boolean sendErrorLog) throws } } - /* - * (non-Javadoc) - * @see fr.univlorraine.ecandidat.services.file.FileManager#getInputStreamFromFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier, java.lang.Boolean) - */ + /* (non-Javadoc) + * + * @see fr.univlorraine.ecandidat.services.file.FileManager#getInputStreamFromFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier, java.lang.Boolean) */ @Override public InputStream getInputStreamFromFile(final Fichier fichier, final Boolean logAction) - throws FileException { + throws FileException { try { return new FileInputStream(new File(getFilePath(fichier))); - } catch (FileNotFoundException e) { + } catch (final FileNotFoundException e) { if (logAction) { logger.error("Stockage de fichier - FileSystem : erreur de recuperation du fichier ", e); } - throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] {fichier.getNomFichier()}, UI.getCurrent().getLocale()), e); + throw new FileException(applicationContext.getMessage("file.error.stream", new Object[] { fichier.getNomFichier() }, UI.getCurrent().getLocale()), e); } } - /* - * (non-Javadoc) - * @see fr.univlorraine.ecandidat.services.file.FileManager#createFileFromUpload(fr.univlorraine.ecandidat.utils.ByteArrayInOutStream, java.lang.String, java.lang.String, long, java.lang.String, - * java.lang.String, fr.univlorraine.ecandidat.entities.ecandidat.Candidature, java.lang.Boolean) - */ + /* (non-Javadoc) + * + * @see fr.univlorraine.ecandidat.services.file.FileManager#createFileFromUpload(fr.univlorraine.ecandidat.utils.ByteArrayInOutStream, java.lang.String, + * java.lang.String, long, java.lang.String, + * java.lang.String, fr.univlorraine.ecandidat.entities.ecandidat.Candidature, java.lang.Boolean) */ @Override - public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final String mimeType, - final String filename, final long length, final String typeFichier, final String prefixe, final Candidature candidature, final Boolean commune) throws FileException { - String name = prefixe + "_" + formatterDateTimeFile.format(LocalDateTime.now()) + "_" + MethodUtils.cleanFileName(filename); + public FileCustom createFileFromUpload(final ByteArrayInOutStream file, + final String mimeType, + final String filename, + final long length, + final String typeFichier, + final String prefixe, + final Candidature candidature, + final Boolean commune) throws FileException { + final String name = prefixe + "_" + formatterDateTimeFile.format(LocalDateTime.now()) + "_" + MethodUtils.cleanFileName(filename); String rootPath = ""; String path = ""; if (typeFichier.equals(ConstanteUtils.TYPE_FICHIER_GESTIONNAIRE)) { @@ -169,21 +171,21 @@ public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final St /* Creation du chemin de fichiers */ try { - Path directory = Paths.get(rootPath + path); + final Path directory = Paths.get(rootPath + path); Files.createDirectories(directory); - } catch (IOException e) { + } catch (final IOException e) { logger.error("Stockage de fichier - FileSystem : erreur de creation du fichier ", e); MethodUtils.closeRessource(file); throw new FileException(applicationContext.getMessage("file.error.create", null, UI.getCurrent().getLocale()), e); } } path = path + name; - String finalPath = rootPath + path; + final String finalPath = rootPath + path; OutputStream outputStream = null; try { outputStream = new FileOutputStream(finalPath); file.writeTo(outputStream); - } catch (Exception e) { + } catch (final Exception e) { logger.error("Stockage de fichier - FileSystem : erreur de creation du fichier ", e); throw new FileException(applicationContext.getMessage("file.error.create", null, UI.getCurrent().getLocale()), e); } finally { @@ -199,11 +201,11 @@ public FileCustom createFileFromUpload(final ByteArrayInOutStream file, final St } /** - * @param path - * @return true si le fichier existe + * @param path + * @return true si le fichier existe */ private Boolean checkFileExists(final String path) { - File f = new File(path); + final File f = new File(path); if (f.exists() && !f.isDirectory()) { return true; } else { @@ -211,10 +213,9 @@ private Boolean checkFileExists(final String path) { } } - /* - * (non-Javadoc) - * @see fr.univlorraine.ecandidat.services.file.FileManager#existFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier) - */ + /* (non-Javadoc) + * + * @see fr.univlorraine.ecandidat.services.file.FileManager#existFile(fr.univlorraine.ecandidat.entities.ecandidat.Fichier) */ @Override public Boolean existFile(final Fichier file) throws FileException { return checkFileExists(getFilePath(file)); @@ -222,9 +223,8 @@ public Boolean existFile(final Fichier file) throws FileException { /** * Retourne le path d'un fichier suivant son type - * - * @param fichier - * @return le path d'un fichier suivant son type + * @param fichier + * @return le path d'un fichier suivant son type */ private String getFilePath(final Fichier fichier) { if (fichier.getTypFichier().equals(ConstanteUtils.TYPE_FICHIER_GESTIONNAIRE)) { @@ -236,9 +236,8 @@ private String getFilePath(final Fichier fichier) { /** * Renvoi un customFIle a partir d'un document fileSystem - * - * @param doc - * @return un customFIle a partir d'un document fileSystem + * @param doc + * @return un customFIle a partir d'un document fileSystem */ private FileCustom getFileFromDoc(final String id, final String fileName, final String cod) { return new FileCustom(id, cod, fileName, ""); @@ -246,15 +245,14 @@ private FileCustom getFileFromDoc(final String id, final String fileName, final /** * Verifie qu'un dossier existe en mode filesystem - * - * @param path - * @return true si le directory exist + * @param path + * @return true si le directory exist */ private Boolean directoryExistFileSystem(final String path) { if (path == null || path.equals("")) { return false; } - File f = new File(path); + final File f = new File(path); if (f.exists() && f.isDirectory()) { return true; } @@ -262,31 +260,30 @@ private Boolean directoryExistFileSystem(final String path) { return false; } - /* - * (non-Javadoc) - * @see fr.univlorraine.ecandidat.services.file.FileManager#deleteCampagneFolder(java.lang.String) - */ + /* (non-Javadoc) + * + * @see fr.univlorraine.ecandidat.services.file.FileManager#deleteCampagneFolder(java.lang.String) */ @Override - public Boolean deleteCampagneFolder(final String codCampagne) { + public Boolean deleteCampagneFolder(final String codCampagne) throws FileException { logger.debug("Suppression du dossier de campagne : " + codCampagne); - String path = folderCandidat + codCampagne; - File folderCamp = new File(path); + final String path = folderCandidat + codCampagne; + final File folderCamp = new File(path); logger.debug("Suppression du dossier de campagne, Path=" + folderCamp.getPath()); if (folderCamp.exists() && folderCamp.isDirectory()) { try { FileUtils.deleteDirectory(folderCamp); return true; - } catch (IOException e) { - logger.error("Impossible de supprimer le dossier de campagne : " + path + ", vous devez le supprimer à la main", e); + } catch (final IOException e) { + throw new FileException("Impossible de supprimer le dossier de campagne : " + path + ", vous devez le supprimer à la main", e); } } else { - logger.error("Impossible de supprimer le dossier de campagne : " + path + ", celui-ci n'existe pas"); + throw new FileException("Impossible de supprimer le dossier de campagne : " + path + ", celui-ci n'existe pas"); } - return false; } /** - * @see fr.univlorraine.ecandidat.services.file.FileManager#isFileCandidatureOpiExist(fr.univlorraine.ecandidat.entities.ecandidat.PjOpi, fr.univlorraine.ecandidat.entities.ecandidat.Fichier, + * @see fr.univlorraine.ecandidat.services.file.FileManager#isFileCandidatureOpiExist(fr.univlorraine.ecandidat.entities.ecandidat.PjOpi, + * fr.univlorraine.ecandidat.entities.ecandidat.Fichier, * java.lang.String) */ @Override @@ -297,12 +294,12 @@ public Boolean isFileCandidatureOpiExist(final PjOpi pjOpi, final Fichier file, return null; } /* Dossier de base pour l'ind_opi */ - File folder = new File(MethodUtils.getFolderOpiPjPath(folderApoCandidature, pjOpi.getCodIndOpi())); + final File folder = new File(MethodUtils.getFolderOpiPjPath(folderApoCandidature, pjOpi.getCodIndOpi())); if (!folder.isDirectory()) { return false; } /* Filtre pour rechercher le fichier dans le dossier */ - FilenameFilter filter = new FilenameFilter() { + final FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(final File dir, final String name) { return name.toLowerCase().startsWith(MethodUtils.getFileOpiPj(pjOpi.getId().getCodApoPj(), pjOpi.getCodIndOpi()).toLowerCase()); @@ -310,7 +307,7 @@ public boolean accept(final File dir, final String name) { }; /* True si le filtre ramene plus de 0 resultats */ return folder.listFiles(filter).length > 0; - } catch (Exception e) { + } catch (final Exception e) { throw new FileException(e); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolApogeeWSServiceImpl.java b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolApogeeWSServiceImpl.java index 6ae33c93..4d471cf0 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolApogeeWSServiceImpl.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolApogeeWSServiceImpl.java @@ -41,6 +41,10 @@ import org.apache.axis.AxisFault; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -101,6 +105,7 @@ import fr.univlorraine.ecandidat.entities.siscol.WSPjInfo; import fr.univlorraine.ecandidat.services.siscol.SiScolRestUtils.SiScolRestException; import fr.univlorraine.ecandidat.utils.ConstanteUtils; +import fr.univlorraine.ecandidat.utils.KeyValue; import fr.univlorraine.ecandidat.utils.MethodUtils; import fr.univlorraine.ecandidat.utils.NomenclatureUtils; import gouv.education.apogee.commun.client.utils.WSUtils; @@ -173,9 +178,15 @@ public class SiScolApogeeWSServiceImpl implements SiScolGenericService, Serializ @Resource private transient String urlWsPjApogee; + @Resource + private transient KeyValue headerWsPjApogee; + @Resource private transient String urlWsCheckInes; + @Resource + private transient KeyValue headerWsCheckInes; + /** @see fr.univlorraine.ecandidat.services.siscol.SiScolGenericService#isImplementationApogee() */ @Override public Boolean isImplementationApogee() { @@ -1343,7 +1354,7 @@ public WSPjInfo getPjInfoFromApogee(final String codAnu, final String codEtu, fi } params.add("codEtu", codEtu); params.add("codTpj", codPj); - final List liste = siScolRestServiceInterface.getList(urlWsPjApogee, ConstanteUtils.WS_APOGEE_PJ_INFO, WSPjInfo[].class, params); + final List liste = siScolRestServiceInterface.getList(urlWsPjApogee, ConstanteUtils.WS_APOGEE_PJ_INFO, WSPjInfo[].class, params, headerWsPjApogee); if (liste == null) { return null; } @@ -1361,9 +1372,12 @@ public WSPjInfo getPjInfoFromApogee(final String codAnu, final String codEtu, fi } return null; } catch (final SiScolRestException e) { - if (e.getErreurType().equals("nullretrieve.etudiantinexistant")) { - return null; - } +// if (e.getErreurType().equals("nullretrieve.etudiantinexistant")) { +// return null; +// } else if (e.getErreurType().equals("nullretrieve.piecejustif")) { +// return null; +// } + // traiter les autres cas return null; } catch (final Exception ex) { @@ -1390,7 +1404,7 @@ public InputStream getPjFichierFromApogee(final String codAnu, final String codE params.add("codAnu", codAnu); params.add("codEtu", codEtu); params.add("codTpj", codPj); - return siScolRestServiceInterface.getFile(urlWsPjApogee, ConstanteUtils.WS_APOGEE_PJ_FILE, params); + return siScolRestServiceInterface.getFile(urlWsPjApogee, ConstanteUtils.WS_APOGEE_PJ_FILE, params, headerWsPjApogee); } catch (final SiScolRestException e) { if (e.getErreurType().equals("nullretrieve.etudiantinexistant")) { return null; @@ -1468,7 +1482,15 @@ public Boolean checkStudentINES(final String ine, final String cle) throws SiSco mapPostParameter.put(ConstanteUtils.WS_INES_PARAM_TYPE, ConstanteUtils.WS_INES_PARAM_TYPE_INES); mapPostParameter.put(ConstanteUtils.WS_INES_PARAM_INE, ine); mapPostParameter.put(ConstanteUtils.WS_INES_PARAM_KEY, cle); - return new RestTemplate().postForObject(uri, mapPostParameter, Boolean.class); + + final HttpHeaders headers = new HttpHeaders(); + if (headerWsCheckInes != null && headerWsCheckInes.isNotEmpty()) { + headers.set(headerWsCheckInes.getKey(), headerWsCheckInes.getValue()); + } + + final HttpEntity> request = new HttpEntity<>(mapPostParameter, headers); + + return new RestTemplate().postForObject(uri, request, Boolean.class); } catch (final Exception e) { logger.error("Erreur à l'appel du service de vérification INES", e); throw new SiScolException("Erreur à l'appel du service de vérification INES", e); @@ -1486,11 +1508,16 @@ public String getVersionWSCheckIne() { } /* Definition de l'uri */ final URI uri = SiScolRestUtils.getURIForPostService(urlWsCheckInes, ConstanteUtils.WS_INES_VERSION); - final String res = new RestTemplate().getForObject(uri, String.class); - if (res == null) { + final HttpHeaders headers = new HttpHeaders(); + if (headerWsCheckInes != null && headerWsCheckInes.isNotEmpty()) { + headers.set(headerWsCheckInes.getKey(), headerWsCheckInes.getValue()); + } + + final ResponseEntity response = new RestTemplate().exchange(uri, HttpMethod.GET, new HttpEntity(headers), String.class); + if (response == null || response.getBody() == null) { return NomenclatureUtils.VERSION_NO_VERSION_VAL; } - return res; + return response.getBody(); } catch (final Exception e) { logger.warn("Erreur à l'appel du service de version de checkine"); return NomenclatureUtils.VERSION_NO_VERSION_VAL; diff --git a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestServiceInterface.java b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestServiceInterface.java index 0dde4789..67432be1 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestServiceInterface.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestServiceInterface.java @@ -34,6 +34,7 @@ import fr.univlorraine.ecandidat.services.siscol.SiScolRestUtils.SiScolResponseErrorHandler; import fr.univlorraine.ecandidat.services.siscol.SiScolRestUtils.SiScolRestException; +import fr.univlorraine.ecandidat.utils.KeyValue; /** * Class utilitaire des services rest de l'AMUE @@ -50,17 +51,24 @@ public class SiScolRestServiceInterface { * @return une liste d'objets pour un service donné * @throws SiScolException */ - public List getList(final String url, final String service, final Class klass, final MultiValueMap mapGetParameter) throws SiScolRestException, SiScolException { + public List getList(final String url, final String service, final Class klass, final MultiValueMap mapGetParameter, final KeyValue header) throws SiScolRestException, SiScolException { try { - URI targetUrl = SiScolRestUtils.getURIForService(url, service, mapGetParameter); - RestTemplate restTemplate = new RestTemplate(); + final URI targetUrl = SiScolRestUtils.getURIForService(url, service, mapGetParameter); + final RestTemplate restTemplate = new RestTemplate(); restTemplate.setErrorHandler(new SiScolResponseErrorHandler()); - T[] ret = restTemplate.getForObject(targetUrl, klass); - List liste = Arrays.asList(ret); + + final HttpHeaders headers = new HttpHeaders(); + if (header != null && header.isNotEmpty()) { + headers.set(header.getKey(), header.getValue()); + } + + final ResponseEntity response = restTemplate.exchange(targetUrl, HttpMethod.GET, new HttpEntity(headers), klass); + + final List liste = Arrays.asList(response.getBody()); return liste; - } catch (SiScolRestException e) { + } catch (final SiScolRestException e) { throw e; - } catch (Exception e) { + } catch (final Exception e) { throw new SiScolException("Erreur a l'appel du WS Rest des PJ", e); } } @@ -73,21 +81,25 @@ public List getList(final String url, final String service, final Class mapGetParameter) throws SiScolRestException, SiScolException { + public InputStream getFile(final String url, final String service, final MultiValueMap mapGetParameter, final KeyValue header) throws SiScolRestException, SiScolException { try { - URI targetUrl = SiScolRestUtils.getURIForService(url, service, mapGetParameter); - RestTemplate restTemplate = new RestTemplate(); + final URI targetUrl = SiScolRestUtils.getURIForService(url, service, mapGetParameter); + final RestTemplate restTemplate = new RestTemplate(); restTemplate.setErrorHandler(new SiScolResponseErrorHandler()); restTemplate.getMessageConverters().add(new ResourceHttpMessageConverter()); - HttpHeaders headers = new HttpHeaders(); + final HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM)); - HttpEntity entity = new HttpEntity<>(headers); + if (header != null && header.isNotEmpty()) { + headers.set(header.getKey(), header.getValue()); + } + + final HttpEntity entity = new HttpEntity<>(headers); - ResponseEntity response = restTemplate.exchange(targetUrl, HttpMethod.GET, entity, Resource.class); + final ResponseEntity response = restTemplate.exchange(targetUrl, HttpMethod.GET, entity, Resource.class); return response.getBody().getInputStream(); - } catch (SiScolRestException e) { + } catch (final SiScolRestException e) { throw e; - } catch (Exception e) { + } catch (final Exception e) { throw new SiScolException("Erreur a l'appel du WS Rest des PJ", e); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestUtils.java b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestUtils.java index 6a44076d..58bc2a84 100644 --- a/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestUtils.java +++ b/src/main/java/fr/univlorraine/ecandidat/services/siscol/SiScolRestUtils.java @@ -43,37 +43,36 @@ /** * Class utilitaire des services rest de l'AMUE - * * @author Kevin Hergalant */ public class SiScolRestUtils { /** - * @param path - * @param service - * @param mapGetParameter - * @return l'uri du service demandé + * @param path + * @param service + * @param mapGetParameter + * @return l'uri du service demandé */ public static URI getURIForService(final String path, final String service, final MultiValueMap mapGetParameter) { return UriComponentsBuilder.fromUriString(path).path(service).queryParams(mapGetParameter).build().toUri(); } /** - * @param path - * @param service - * @return l'uri du service demandé + * @param path + * @param service + * @return l'uri du service demandé */ public static URI getURIForPostService(final String path, final String service) { return UriComponentsBuilder.fromUriString(path).path(service).build().toUri(); } /** - * @param response - * @return le charset du header + * @param response + * @return le charset du header */ private static Charset getCharset(final ClientHttpResponse response) { - HttpHeaders headers = response.getHeaders(); - MediaType contentType = headers.getContentType(); + final HttpHeaders headers = response.getHeaders(); + final MediaType contentType = headers.getContentType(); Charset charset = contentType != null ? contentType.getCharset() : null; if (charset == null) { charset = Charset.forName(ConstanteUtils.WS_APOGEE_DEFAULT_CHARSET); @@ -83,7 +82,6 @@ private static Charset getCharset(final ClientHttpResponse response) { /** * Class de deserialisation de boolean - * * @author Kevin Hergalant */ public static class StringBooleanDeserializer extends JsonDeserializer { @@ -98,12 +96,11 @@ public Boolean deserialize(final JsonParser parser, final DeserializationContext /** * Class de customisation d'erreur pour un appel au service rest de l'amue - * * @author Kevin Hergalant */ public static class SiScolResponseErrorHandler implements ResponseErrorHandler { - private ResponseErrorHandler errorHandler = new DefaultResponseErrorHandler(); + private final ResponseErrorHandler errorHandler = new DefaultResponseErrorHandler(); @Override public boolean hasError(final ClientHttpResponse response) throws IOException { @@ -113,12 +110,12 @@ public boolean hasError(final ClientHttpResponse response) throws IOException { @Override public void handleError(final ClientHttpResponse response) throws IOException { try { - String jsonInString = IOUtils.toString(response.getBody(), getCharset(response)); - SiScolRestException erreur = new ObjectMapper().readValue(jsonInString, SiScolRestException.class); + final String jsonInString = IOUtils.toString(response.getBody(), getCharset(response)); + final SiScolRestException erreur = new ObjectMapper().readValue(jsonInString, SiScolRestException.class); throw erreur; - } catch (SiScolRestException e) { + } catch (final SiScolRestException e) { throw e; - } catch (Exception ex) { + } catch (final Exception ex) { } errorHandler.handleError(response); } @@ -126,7 +123,6 @@ public void handleError(final ClientHttpResponse response) throws IOException { /** * Class d'exception pour les appels rest SiScol - * * @author Kevin Hergalant */ @Data @@ -140,8 +136,9 @@ public static class SiScolRestException extends RuntimeException { /** Constructeur */ @JsonCreator - public SiScolRestException(@JsonProperty("erreurMsg") final String erreurMsg, @JsonProperty("erreurType") final String erreurType, - @JsonProperty("erreurDescription") final String erreurDescription) { + public SiScolRestException(@JsonProperty("erreurMsg") final String erreurMsg, + @JsonProperty("erreurType") final String erreurType, + @JsonProperty("erreurDescription") final String erreurDescription) { this.erreurMsg = erreurMsg; this.erreurType = erreurType; this.erreurDescription = erreurDescription; diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/ConstanteUtils.java b/src/main/java/fr/univlorraine/ecandidat/utils/ConstanteUtils.java index ea233736..5ee944c2 100644 --- a/src/main/java/fr/univlorraine/ecandidat/utils/ConstanteUtils.java +++ b/src/main/java/fr/univlorraine/ecandidat/utils/ConstanteUtils.java @@ -358,7 +358,8 @@ public class ConstanteUtils { public static final String OPTION_IMG_AFF_OPTIMISE = "1"; /* Variable a intégrer dans les formulaires */ - public static String VAR_REGEX_FORM_NUM_DOSSIER = "\\$\\{numdossier\\}"; + public static String VAR_REGEX_FORM_NUM_DOSSIER = "\\$\\{numDossier\\}"; + public static String VAR_REGEX_FORM_NUM_DOSSIER_OLD = "\\$\\{numdossier\\}"; /* Constantes de mois */ public static String[] NOM_MOIS_SHORT = { "jan", "fev", "mar", "avr", "mai", "juin", "juil", "aou", "sep", "oct", "nov", "dec" }; @@ -386,16 +387,20 @@ public class ConstanteUtils { public static String SECURITY_SWITCH_PATH = "/login/impersonate"; public static String SECURITY_SWITCH_BACK_PATH = "/logout/impersonate"; + /* Constantes Webservice Apo */ + public static String WS_APOGEE_SERVICE_SUFFIXE = ".urlService"; + public static String WS_APOGEE_HEADER_PREFIXE = "api.header."; + /* Charset Rest ApoWS */ - public static String WS_APOGEE_PROP_FILE = "/configUrlServices.properties"; + public static String WS_APOGEE_PROP_FILE = "configUrlServices"; public static String WS_APOGEE_DEFAULT_CHARSET = "UTF-8"; - public static String WS_APOGEE_PJ_SERVICE = "pj.urlService"; + public static String WS_APOGEE_PJ_URL_SERVICE = "pj"; public static String WS_APOGEE_PJ_INFO = "info"; public static String WS_APOGEE_PJ_FILE = "fichier"; public static String WS_APOGEE_PJ_TEM_VALID_CODE = "V"; /* WS INES */ - public static String WS_INES_CHECK_URI_SERVICE = "checkInes.urlService"; + public static String WS_INES_CHECK_URL_SERVICE = "checkInes"; public static String WS_INES_CHECK_SERVICE = "/v1/check-ine"; public static String WS_INES_VERSION = "/version"; public static String WS_INES_PARAM_INE = "ine"; diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/KeyValue.java b/src/main/java/fr/univlorraine/ecandidat/utils/KeyValue.java new file mode 100644 index 00000000..f342f40e --- /dev/null +++ b/src/main/java/fr/univlorraine/ecandidat/utils/KeyValue.java @@ -0,0 +1,49 @@ +/** + * ESUP-Portail eCandidat - 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.ecandidat.utils; + +import java.io.Serializable; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * Classe de presentation d'un parametre + * @author Kevin Hergalant + */ +@Data +@EqualsAndHashCode(of = "key") +@SuppressWarnings("serial") +public class KeyValue implements Serializable { + + private String key; + private String value; + + public KeyValue() { + super(); + } + + public KeyValue(final String key, final String value) { + super(); + this.key = key; + this.value = value; + } + + public Boolean isNotEmpty() { + return key != null && value != null; + } +} diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/MethodUtils.java b/src/main/java/fr/univlorraine/ecandidat/utils/MethodUtils.java index ed5306c3..7934b242 100644 --- a/src/main/java/fr/univlorraine/ecandidat/utils/MethodUtils.java +++ b/src/main/java/fr/univlorraine/ecandidat/utils/MethodUtils.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.utils; import java.io.Closeable; -import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.DecimalFormat; @@ -36,7 +35,7 @@ import java.util.List; import java.util.Locale; import java.util.Optional; -import java.util.Properties; +import java.util.ResourceBundle; import java.util.Set; import java.util.StringTokenizer; import java.util.concurrent.TimeUnit; @@ -59,7 +58,6 @@ import com.vaadin.ui.UI; -import fr.univlorraine.ecandidat.services.siscol.SiScolRestUtils; import fr.univlorraine.ecandidat.utils.bean.presentation.SimpleTablePresentation; /** @@ -1048,7 +1046,7 @@ public static String cleanHtmlValue(final String html) { } final Whitelist whitelist = Whitelist.relaxed(); - whitelist.addTags("font"); + whitelist.addTags("font", "hr"); whitelist.addAttributes("font", "color", "face", "size", "style"); whitelist.addAttributes("table", "border", "cellspacing", "cellpadding", "style"); whitelist.addAttributes("td", "width", "valign", "style"); @@ -1065,16 +1063,8 @@ public static String cleanHtmlValue(final String html) { * @return l'url de service Apogée */ public static String getUrlWSApogee(final String service) { - final String filename = ConstanteUtils.WS_APOGEE_PROP_FILE; - final Properties prop = new Properties(); - InputStream input = null; try { - input = SiScolRestUtils.class.getResourceAsStream(filename); - if (input == null) { - return ""; - } - prop.load(input); - String path = prop.getProperty(service); + String path = ResourceBundle.getBundle(ConstanteUtils.WS_APOGEE_PROP_FILE).getString(service + ConstanteUtils.WS_APOGEE_SERVICE_SUFFIXE); if (path != null && !path.endsWith("/")) { path = path + "/"; } @@ -1082,17 +1072,32 @@ public static String getUrlWSApogee(final String service) { return ""; } return path; - } catch (final IOException ex) { + } catch (final Exception ex) { return ""; - } finally { - if (input != null) { - try { - input.close(); - } catch (final IOException e) { - return ""; - } + } + } + + /** + * @param service + * @return la clé de header + */ + public static KeyValue getHeaderWSApogee(final String service) { + try { + final ResourceBundle bundle = ResourceBundle.getBundle(ConstanteUtils.WS_APOGEE_PROP_FILE); + final Set keys = bundle.keySet(); + if (keys == null) { + return new KeyValue(); } + + final Optional keyHeaderOpt = keys.stream().filter(e -> e.startsWith(ConstanteUtils.WS_APOGEE_HEADER_PREFIXE + service)).findFirst(); + if (keyHeaderOpt.isPresent()) { + final String keyHeader = keyHeaderOpt.get(); + final String valueHeader = bundle.getString(keyHeader); + return new KeyValue(keyHeader.replaceAll(ConstanteUtils.WS_APOGEE_HEADER_PREFIXE + service + ".", ""), valueHeader); + } + } catch (final Exception ex) { } + return new KeyValue(); } /** diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/NomenclatureUtils.java b/src/main/java/fr/univlorraine/ecandidat/utils/NomenclatureUtils.java index 207a01a9..1b4de75f 100644 --- a/src/main/java/fr/univlorraine/ecandidat/utils/NomenclatureUtils.java +++ b/src/main/java/fr/univlorraine/ecandidat/utils/NomenclatureUtils.java @@ -142,7 +142,7 @@ public class NomenclatureUtils { "candidat.civilite;candidat.numDossierOpi;candidat.nomPat;candidat.nomUsu;candidat.prenom;candidat.autrePrenom;candidat.ine;candidat.cleIne;candidat.datNaiss;candidat.libVilleNaiss;candidat.libLangue;candidat.tel;candidat.telPort"; public static final String MAIL_FORMATION_GEN_VAR = "formation.code;formation.libelle;formation.codEtpVetApo;formation.codVrsVetApo;formation.libApo;formation.motCle;formation.datDebDepot;formation.datFinDepot;formation.datPreAnalyse;formation.datRetour;formation.datJury;formation.datPubli;formation.datConfirm"; - public static final String MAIL_COMMISSION_GEN_VAR = "commission.libelle;commission.mail;commission.adresse;commission.tel;commission.fax;commission.commentaireRetour;commission.signataire"; + public static final String MAIL_COMMISSION_GEN_VAR = "commission.libelle;commission.mail;commission.adresse;commission.tel;commission.url;commission.fax;commission.commentaireRetour;commission.signataire"; public static final String MAIL_DOSSIER_GEN_VAR = "dossier.dateReception;dossier.montantFraisIns;dossier.complementExo"; public static final String MAIL_DEC_VAR = "commentaire;complementAppel"; diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/bean/export/ExportCommission.java b/src/main/java/fr/univlorraine/ecandidat/utils/bean/export/ExportCommission.java index e3d4f20d..4dfaedd1 100644 --- a/src/main/java/fr/univlorraine/ecandidat/utils/bean/export/ExportCommission.java +++ b/src/main/java/fr/univlorraine/ecandidat/utils/bean/export/ExportCommission.java @@ -27,7 +27,6 @@ /** * Objet contenant les infos d'un candidat pour l'export - * * @author Kevin Hergalant */ @Data @@ -40,11 +39,14 @@ public class ExportCommission implements Serializable { private String tel; private String mail; private String fax; + private String url; private String commentRetour; private String signataire; private String temEditLettre; private String temMailLettre; + + private String mailAlert; private String temAlertProp; private String temAlertAnnul; private String temAlertTrans; @@ -69,6 +71,7 @@ public ExportCommission(final Commission comm, final DateTimeFormatter formatter cod = comm.getCodComm(); commentRetour = comm.getCommentRetourComm(); fax = comm.getFaxComm(); + url = comm.getUrlComm(); lib = comm.getLibComm(); mail = comm.getMailComm(); signataire = comm.getSignataireComm(); @@ -77,6 +80,8 @@ public ExportCommission(final Commission comm, final DateTimeFormatter formatter tes = MethodUtils.getTemoinFromBoolean(comm.getTesComm()); temEditLettre = MethodUtils.getTemoinFromBoolean(comm.getTemEditLettreComm()); temMailLettre = MethodUtils.getTemoinFromBoolean(comm.getTemMailLettreComm()); + + mailAlert = comm.getMailAlertComm(); temAlertProp = MethodUtils.getTemoinFromBoolean(comm.getTemAlertPropComm()); temAlertAnnul = MethodUtils.getTemoinFromBoolean(comm.getTemAlertAnnulComm()); temAlertTrans = MethodUtils.getTemoinFromBoolean(comm.getTemAlertTransComm()); diff --git a/src/main/java/fr/univlorraine/ecandidat/utils/bean/mail/CommissionMailBean.java b/src/main/java/fr/univlorraine/ecandidat/utils/bean/mail/CommissionMailBean.java index afbaa456..bc92d357 100644 --- a/src/main/java/fr/univlorraine/ecandidat/utils/bean/mail/CommissionMailBean.java +++ b/src/main/java/fr/univlorraine/ecandidat/utils/bean/mail/CommissionMailBean.java @@ -21,7 +21,6 @@ /** * Class pour l'envoie de mail - * * @author Kevin */ @Data @@ -33,6 +32,7 @@ public class CommissionMailBean extends MailBean { private String adresse; private String mail; private String tel; + private String url; private String fax; private String commentaireRetour; private String signataire; diff --git a/src/main/java/fr/univlorraine/ecandidat/vaadin/form/UrlValidator.java b/src/main/java/fr/univlorraine/ecandidat/vaadin/form/UrlValidator.java new file mode 100644 index 00000000..6fb537bb --- /dev/null +++ b/src/main/java/fr/univlorraine/ecandidat/vaadin/form/UrlValidator.java @@ -0,0 +1,51 @@ +/** + * ESUP-Portail eCandidat - 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.ecandidat.vaadin.form; + +import java.net.URL; + +import com.vaadin.data.Validator; + +/** + * Validateur de champs traduction pour URL + * @author Kevin Hergalant + */ +@SuppressWarnings("serial") +public class UrlValidator implements Validator { + + private String urlMalformedError = ""; + + public UrlValidator(final String urlMalformedError) { + this.urlMalformedError = urlMalformedError; + } + + /** @see com.vaadin.data.Validator#validate(java.lang.Object) */ + @Override + public void validate(final Object value) throws InvalidValueException { + /* Si la valeur est null donc nouvelle, on sort */ + if (value == null) { + return; + } + try { + new URL((String) value); + } catch (final Exception e) { + throw new InvalidValueException(urlMalformedError); + } + + } + +} diff --git a/src/main/java/fr/univlorraine/ecandidat/views/AccueilView.java b/src/main/java/fr/univlorraine/ecandidat/views/AccueilView.java index 0d1e6e2b..089b14d3 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/AccueilView.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/AccueilView.java @@ -46,6 +46,7 @@ import fr.univlorraine.ecandidat.controllers.MessageController; import fr.univlorraine.ecandidat.controllers.TableRefController; import fr.univlorraine.ecandidat.controllers.TestController; +import fr.univlorraine.ecandidat.controllers.TestWsController; import fr.univlorraine.ecandidat.controllers.UserController; import fr.univlorraine.ecandidat.entities.ecandidat.Langue; import fr.univlorraine.ecandidat.utils.ConstanteUtils; @@ -57,17 +58,12 @@ /** * Page d'accueil - * * @author Kevin Hergalant */ +@SuppressWarnings("serial") @SpringView(name = AccueilView.NAME) public class AccueilView extends VerticalLayout implements View { - // private Logger logger = LoggerFactory.getLogger(AccueilView.class); - - /** serialVersionUID **/ - private static final long serialVersionUID = -1892026915407604201L; - public static final String NAME = "accueilView"; /* Injections */ @@ -90,24 +86,26 @@ public class AccueilView extends VerticalLayout implements View { @Resource private transient CacheController cacheController; - private Label labelTitle = new Label(); - private CustomPanel panelMessage = new CustomPanel(); - private Label labelAccueil = new Label("", ContentMode.HTML); - private HorizontalLayout hlConnectedCreateCompte = new HorizontalLayout(); - private VerticalLayout vlConnexionWithCompte = new VerticalLayout(); - private Panel panelCreateCompte = new Panel(); - private OneClickButton logBtnNoCompte = new OneClickButton(FontAwesome.SIGN_OUT); - private ConnexionLayout connexionLayout = new ConnexionLayout(); + private final Label labelTitle = new Label(); + private final CustomPanel panelMessage = new CustomPanel(); + private final Label labelAccueil = new Label("", ContentMode.HTML); + private final HorizontalLayout hlConnectedCreateCompte = new HorizontalLayout(); + private final VerticalLayout vlConnexionWithCompte = new VerticalLayout(); + private final Panel panelCreateCompte = new Panel(); + private final OneClickButton logBtnNoCompte = new OneClickButton(FontAwesome.SIGN_OUT); + private final ConnexionLayout connexionLayout = new ConnexionLayout(); /* CNIL */ - private Panel panelCnil = new Panel(); - private Label labelCnil = new Label(); + private final Panel panelCnil = new Panel(); + private final Label labelCnil = new Label(); private String title; /** TODO a retirer-->Test */ @Resource private transient TestController testController; + @Resource + private transient TestWsController testWsController; /** TODO fin a retirer-->Test */ @@ -120,60 +118,31 @@ public void init() { setSizeFull(); if (testController.isTestMode()) { + final HorizontalLayout hlTest = new HorizontalLayout(); + hlTest.setSpacing(true); + addComponent(hlTest); - OneClickButton btnTest = new OneClickButton("Test"); - addComponent(btnTest); + final OneClickButton btnTest = new OneClickButton("Test"); + hlTest.addComponent(btnTest); btnTest.addClickListener(e -> { - // throw new RuntimeException(new SocketTimeoutException()); testController.testMethode(); }); - /* - * btnTest.setCaption(applicationContext.getMessage( - * "commission.parametre.test.lettre.ref", null, UI.getCurrent().getLocale())); - * new OnDemandFileDownloader(new OnDemandStreamFile() { - * @Override public OnDemandFile getOnDemandFile() { return - * testController.testLettreAdm(); } },btnTest); - */ - /* - * new OnDemandFileDownloader(new OnDemandStreamFile() { - * @Override public OnDemandFile getOnDemandFile() { return - * testController.testFichier(); } },btnTest); - */ - - /* - * //testes de montée en charge HorizontalLayout hlTestMC = new - * HorizontalLayout(); hlTestMC.setWidth(100, Unit.PERCENTAGE); - * hlTestMC.setSpacing(true); addComponent(hlTestMC); //bouton creation de - * compte OneClickButton btnCreateCompte = new OneClickButton("Create"); - * hlTestMC.addComponent(btnCreateCompte); btnCreateCompte.addClickListener(e->{ - * CompteMinima cpt = testController.createCompteMinima(); - * connexionLayout.setLogin(cpt.getNumDossierOpiCptMin()); }); - * //bouton creation de compte OneClickButton btnComplete = new - * OneClickButton("Complete"); hlTestMC.addComponent(btnComplete); - * btnComplete.addClickListener(e->{ testController.completeDossier(); }); - * //candidate OneClickButton btnCandidate = new OneClickButton("Candidate"); - * hlTestMC.addComponent(btnCandidate); btnCandidate.addClickListener(e->{ - * testController.candidatToFormation(); }); - * //open OneClickButton btnOpen = new OneClickButton("Open"); - * hlTestMC.addComponent(btnOpen); btnOpen.addClickListener(e->{ - * testController.openCandidature(); }); - * //download OneClickButton btnDownload = new OneClickButton("Download"); - * hlTestMC.addComponent(btnDownload); btnDownload.addClickListener(e->{ - * testController.downloadDossier(); }); - * //delete OneClickButton btnDelete = new OneClickButton("Delete"); - * hlTestMC.addComponent(btnDelete); btnDelete.addClickListener(e->{ - * testController.deleteCandidat(); }); - * //finish OneClickButton btnFinish = new OneClickButton("Finish"); - * hlTestMC.addComponent(btnFinish); btnFinish.addClickListener(e->{ - * testController.finish(); }); - * //bouton candidature OneClickButton btnCandidature = new - * OneClickButton("All"); hlTestMC.addComponent(btnCandidature); - * btnCandidature.addClickListener(e->{ testController.allInOne(); }); - */ + + final OneClickButton btnTestWs = new OneClickButton("Test Ws Apogee"); + hlTest.addComponent(btnTestWs); + btnTestWs.addClickListener(e -> { + try { + testWsController.testWs(); + } catch (final Exception ex) { + // TODO Auto-generated catch block + ex.printStackTrace(); + } + }); + } /* Titre */ - HorizontalLayout hlLangue = new HorizontalLayout(); + final HorizontalLayout hlLangue = new HorizontalLayout(); hlLangue.setWidth(100, Unit.PERCENTAGE); hlLangue.setSpacing(true); @@ -184,14 +153,14 @@ public void init() { hlLangue.setComponentAlignment(labelTitle, Alignment.MIDDLE_LEFT); if (cacheController.getLangueEnServiceWithoutDefault().size() > 0) { - Langue langueDef = cacheController.getLangueDefault(); - Image flagDef = new Image(null, new ThemeResource("images/flags/" + langueDef.getCodLangue() + ".png")); + final Langue langueDef = cacheController.getLangueDefault(); + final Image flagDef = new Image(null, new ThemeResource("images/flags/" + langueDef.getCodLangue() + ".png")); flagDef.addClickListener(e -> changeLangue(langueDef)); flagDef.addStyleName(StyleConstants.CLICKABLE); hlLangue.addComponent(flagDef); hlLangue.setComponentAlignment(flagDef, Alignment.MIDDLE_CENTER); cacheController.getLangueEnServiceWithoutDefault().forEach(langue -> { - Image flag = new Image(null, new ThemeResource("images/flags/" + langue.getCodLangue() + ".png")); + final Image flag = new Image(null, new ThemeResource("images/flags/" + langue.getCodLangue() + ".png")); flag.addClickListener(e -> changeLangue(langue)); flag.addStyleName(StyleConstants.CLICKABLE); hlLangue.addComponent(flag); @@ -203,13 +172,13 @@ public void init() { addComponent(hlLangue); /* Panel scrollable de contenu */ - Panel panelContent = new Panel(); + final Panel panelContent = new Panel(); panelContent.setSizeFull(); panelContent.addStyleName(ValoTheme.PANEL_BORDERLESS); addComponent(panelContent); setExpandRatio(panelContent, 1); - VerticalLayout vlContent = new VerticalLayout(); + final VerticalLayout vlContent = new VerticalLayout(); vlContent.setSpacing(true); panelContent.setContent(vlContent); @@ -255,7 +224,7 @@ public void init() { panelCreateCompte.setCaption(applicationContext.getMessage("accueilView.title.nocompte", null, UI.getCurrent().getLocale())); panelCreateCompte.addStyleName(StyleConstants.PANEL_COLORED); - VerticalLayout vlCreateCompte = new VerticalLayout(); + final VerticalLayout vlCreateCompte = new VerticalLayout(); vlCreateCompte.setSpacing(true); vlCreateCompte.setMargin(true); panelCreateCompte.setContent(vlCreateCompte); @@ -278,7 +247,7 @@ private void addMentionCnil() { addComponent(panelCnil); setComponentAlignment(panelCnil, Alignment.BOTTOM_LEFT); - VerticalLayout vlContentLabelCnil = new VerticalLayout(); + final VerticalLayout vlContentLabelCnil = new VerticalLayout(); vlContentLabelCnil.setSizeUndefined(); vlContentLabelCnil.setWidth(100, Unit.PERCENTAGE); vlContentLabelCnil.setMargin(true); @@ -294,7 +263,7 @@ private void addMentionCnil() { /** Met a jour la mention CNIL */ private void updateMentionCnil() { - String mentionCnil = applicationContext.getMessage("cnil.mention", null, UI.getCurrent().getLocale()); + final String mentionCnil = applicationContext.getMessage("cnil.mention", null, UI.getCurrent().getLocale()); if (mentionCnil != null && !mentionCnil.equals("")) { labelCnil.setValue(mentionCnil); panelCnil.setVisible(true); @@ -306,7 +275,6 @@ private void updateMentionCnil() { /** * Change la langue de l'utilisateur et rafraichi les infos - * * @param langue */ private void changeLangue(final Langue langue) { @@ -314,7 +282,7 @@ private void changeLangue(final Langue langue) { labelTitle.setValue(title); panelCreateCompte.setCaption(applicationContext.getMessage("accueilView.title.nocompte", null, UI.getCurrent().getLocale())); logBtnNoCompte.setCaption(applicationContext.getMessage("accueilView.createaccount", null, UI.getCurrent().getLocale())); - Authentication auth = userController.getCurrentAuthentication(); + final Authentication auth = userController.getCurrentAuthentication(); setTxtMessageAccueil(auth); refreshLayoutConnexion(auth); updateMentionCnil(); @@ -322,7 +290,6 @@ private void changeLangue(final Langue langue) { /** * Rafrachi le layout de connexion - * * @param auth */ private void refreshLayoutConnexion(final Authentication auth) { @@ -355,12 +322,12 @@ private void refreshConnexionPanelWithCompte() { } /** - * @param auth - * @return le texte de message d'accueil + * @param auth + * @return le texte de message d'accueil */ private String setTxtMessageAccueil(final Authentication auth) { /* On cherche un eventuel message d'accueil */ - String msg = messageController.getMessage(NomenclatureUtils.COD_MSG_ACCUEIL); + final String msg = messageController.getMessage(NomenclatureUtils.COD_MSG_ACCUEIL); if (msg != null) { panelMessage.setMessage(msg); panelMessage.setVisible(true); @@ -371,13 +338,13 @@ private String setTxtMessageAccueil(final Authentication auth) { String txt = ""; if (!userController.isAnonymous(auth)) { - txt += applicationContext.getMessage("accueilView.welcome", new Object[] {userController.getCurrentUserName(auth)}, UI.getCurrent().getLocale()); + txt += applicationContext.getMessage("accueilView.welcome", new Object[] { userController.getCurrentUserName(auth) }, UI.getCurrent().getLocale()); if (userController.isPersonnel(auth)) { - txt += applicationContext.getMessage("accueilView.connected", new Object[] {userController.getCurrentUserLogin(auth)}, UI.getCurrent().getLocale()); - txt += applicationContext.getMessage("accueilView.role", new Object[] {auth.getAuthorities()}, UI.getCurrent().getLocale()); + txt += applicationContext.getMessage("accueilView.connected", new Object[] { userController.getCurrentUserLogin(auth) }, UI.getCurrent().getLocale()); + txt += applicationContext.getMessage("accueilView.role", new Object[] { auth.getAuthorities() }, UI.getCurrent().getLocale()); } else if (userController.isCandidat(auth)) { - txt += applicationContext.getMessage("accueilView.connected", new Object[] {userController.getCurrentNoDossierCptMinOrLogin(auth)}, UI.getCurrent().getLocale()); + txt += applicationContext.getMessage("accueilView.connected", new Object[] { userController.getCurrentNoDossierCptMinOrLogin(auth) }, UI.getCurrent().getLocale()); if (userController.isCandidatValid(auth)) { txt += applicationContext.getMessage("accueilView.cand.connected", null, UI.getCurrent().getLocale()); } else { @@ -400,7 +367,7 @@ private String setTxtMessageAccueil(final Authentication auth) { /** Rafraichi la vue */ private void refreshView() { - Authentication auth = userController.getCurrentAuthentication(); + final Authentication auth = userController.getCurrentAuthentication(); if (userController.isAnonymous(auth)) { title = applicationContext.getMessage(NAME + ".title", null, UI.getCurrent().getLocale()); } else { diff --git a/src/main/java/fr/univlorraine/ecandidat/views/AdminVersionView.java b/src/main/java/fr/univlorraine/ecandidat/views/AdminVersionView.java index 885dedda..3847c71d 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/AdminVersionView.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/AdminVersionView.java @@ -37,6 +37,7 @@ import com.vaadin.ui.themes.ValoTheme; import fr.univlorraine.ecandidat.StyleConstants; +import fr.univlorraine.ecandidat.controllers.DemoController; import fr.univlorraine.ecandidat.controllers.FileController; import fr.univlorraine.ecandidat.controllers.FormulaireController; import fr.univlorraine.ecandidat.controllers.NomenclatureController; @@ -51,7 +52,6 @@ /** * Page de gestion des versions - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @@ -72,13 +72,17 @@ public class AdminVersionView extends VerticalLayout implements View { private transient FormulaireController formulaireController; @Resource private transient FileController fileController; + @Resource + private transient DemoController demoController; - public static final String[] FIELDS_ORDER = {SimpleTablePresentation.CHAMPS_TITLE, SimpleTablePresentation.CHAMPS_VALUE, SimpleTablePresentation.CHAMPS_DATE, - SimpleTablePresentation.CHAMPS_ACTION}; + public static final String[] FIELDS_ORDER = { SimpleTablePresentation.CHAMPS_TITLE, + SimpleTablePresentation.CHAMPS_VALUE, + SimpleTablePresentation.CHAMPS_DATE, + SimpleTablePresentation.CHAMPS_ACTION }; /* Composants */ - private BeanItemContainer container = new BeanItemContainer<>(SimpleTablePresentation.class); - private TableFormating versionTable = new TableFormating(null, container); + private final BeanItemContainer container = new BeanItemContainer<>(SimpleTablePresentation.class); + private final TableFormating versionTable = new TableFormating(null, container); /** Initialise la vue */ @PostConstruct @@ -89,7 +93,7 @@ public void init() { setSpacing(true); /* Titre */ - Label titleNom = new Label(applicationContext.getMessage("adminVersionView.title", null, UI.getCurrent().getLocale())); + final Label titleNom = new Label(applicationContext.getMessage("adminVersionView.title", null, UI.getCurrent().getLocale())); titleNom.addStyleName(StyleConstants.VIEW_TITLE); addComponent(titleNom); @@ -99,7 +103,7 @@ public void init() { @Override public Object generateCell(final Table source, final Object itemId, final Object columnId) { final SimpleTablePresentation bean = (SimpleTablePresentation) itemId; - OneClickButton btnCheck = new OneClickButton(applicationContext.getMessage("btnCheck", null, UI.getCurrent().getLocale()), FontAwesome.ROTATE_RIGHT); + final OneClickButton btnCheck = new OneClickButton(applicationContext.getMessage("btnCheck", null, UI.getCurrent().getLocale()), FontAwesome.ROTATE_RIGHT); switch (bean.getCode()) { case NomenclatureUtils.VERSION_DEMAT: btnCheck.addClickListener(e -> { @@ -118,7 +122,10 @@ public Object generateCell(final Table source, final Object itemId, final Object return btnCheck; case NomenclatureUtils.VERSION_WS_PJ: btnCheck.addClickListener(e -> { - AdminWsPjWindow window = new AdminWsPjWindow(); + if (demoController.getDemoMode()) { + return; + } + final AdminWsPjWindow window = new AdminWsPjWindow(); UI.getCurrent().addWindow(window); }); return btnCheck; @@ -129,7 +136,7 @@ public Object generateCell(final Table source, final Object itemId, final Object return btnCheck; case NomenclatureUtils.VERSION_INES: btnCheck.addClickListener(e -> { - AdminInesWindow window = new AdminInesWindow(); + final AdminInesWindow window = new AdminInesWindow(); UI.getCurrent().addWindow(window); }); return btnCheck; @@ -139,7 +146,7 @@ public Object generateCell(final Table source, final Object itemId, final Object } }); versionTable.setVisibleColumns((Object[]) FIELDS_ORDER); - for (String fieldName : FIELDS_ORDER) { + for (final String fieldName : FIELDS_ORDER) { versionTable.setColumnHeader(fieldName, applicationContext.getMessage("version." + fieldName, null, UI.getCurrent().getLocale())); } versionTable.setSortContainerPropertyId(SimpleTablePresentation.CHAMPS_ORDER); @@ -162,7 +169,7 @@ public Object generateCell(final Table source, final Object itemId, final Object /** @see com.vaadin.navigator.View#enter(com.vaadin.navigator.ViewChangeListener.ViewChangeEvent) */ @Override public void enter(final ViewChangeEvent event) { - List liste = nomenclatureController.getVersions(); + final List liste = nomenclatureController.getVersions(); container.removeAllItems(); container.addAll(liste); versionTable.setPageLength(liste.size()); diff --git a/src/main/java/fr/univlorraine/ecandidat/views/AssistanceView.java b/src/main/java/fr/univlorraine/ecandidat/views/AssistanceView.java index e57cdd9c..4acd3734 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/AssistanceView.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/AssistanceView.java @@ -43,11 +43,9 @@ import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.views.windows.FaqWindow; - /** * Page d'assistance * @author Kevin Hergalant - * */ @SpringView(name = AssistanceView.NAME) public class AssistanceView extends VerticalLayout implements View { @@ -64,118 +62,123 @@ public class AssistanceView extends VerticalLayout implements View { private transient UserController userController; @Resource private transient CacheController cacheController; - + /* Variable d'envirronement */ @Value("${assistance.documentation.url:}") private String assistanceDocumentationUrl; - + @Value("${assistance.documentation.url.candidat:}") private String assistanceDocumentationUrlCandidat; - + @Value("${assistance.documentation.url.candidat.en:}") private String assistanceDocumentationUrlCandidatEn; - + @Value("${assistance.helpdesk.url:}") private String assistanceHelpdeskUrl; - + @Value("${assistance.contact.mail:}") private String assistanceContactMail; - - - - + + @Value("${assistance.contact.url:}") + private String assistanceContactUrl; + /** * Initialise la vue */ @PostConstruct public void init() { - Boolean isPersonnel = userController.isPersonnel(); + final Boolean isPersonnel = userController.isPersonnel(); /* Style */ setMargin(true); - setSpacing(true); + setSpacing(true); /* Titre */ - Label title = new Label(applicationContext.getMessage(NAME + ".title", null, UI.getCurrent().getLocale())); + final Label title = new Label(applicationContext.getMessage(NAME + ".title", null, UI.getCurrent().getLocale())); title.addStyleName(StyleConstants.VIEW_TITLE); addComponent(title); - - Panel panelContent = new Panel(); + + final Panel panelContent = new Panel(); panelContent.setWidth(100, Unit.PERCENTAGE); - - VerticalLayout vlContent = new VerticalLayout(); + + final VerticalLayout vlContent = new VerticalLayout(); vlContent.setSizeUndefined(); vlContent.setSpacing(true); vlContent.setMargin(true); panelContent.setContent(vlContent); addComponent(panelContent); - + Boolean find = false; /* Accès à la faq */ - if (cacheController.getFaq().size()>0){ - OneClickButton docFaq = new OneClickButton(applicationContext.getMessage(NAME + ".btnFaq", null, UI.getCurrent().getLocale()), FontAwesome.QUESTION_CIRCLE); - docFaq.addClickListener(e->{ + if (cacheController.getFaq().size() > 0) { + final OneClickButton docFaq = new OneClickButton(applicationContext.getMessage(NAME + ".btnFaq", null, UI.getCurrent().getLocale()), FontAwesome.QUESTION_CIRCLE); + docFaq.addClickListener(e -> { UI.getCurrent().addWindow(new FaqWindow()); }); docFaq.addStyleName(ValoTheme.BUTTON_LINK); vlContent.addComponent(docFaq); find = true; - } - + } + /* Accès à la documentation */ String urlDoc = null; - if (isPersonnel){ + if (isPersonnel) { urlDoc = assistanceDocumentationUrl; - }else{ + } else { Boolean isEn = false; - Locale locale = UI.getCurrent().getLocale(); - if (locale != null){ - String cod = locale.getLanguage(); - if (assistanceDocumentationUrlCandidatEn!=null && !assistanceDocumentationUrlCandidatEn.equals("") && cod!=null && cod.equals("en")){ + final Locale locale = UI.getCurrent().getLocale(); + if (locale != null) { + final String cod = locale.getLanguage(); + if (assistanceDocumentationUrlCandidatEn != null && !assistanceDocumentationUrlCandidatEn.equals("") && cod != null && cod.equals("en")) { urlDoc = assistanceDocumentationUrlCandidatEn; isEn = true; } - - } - if (!isEn){ + + } + if (!isEn) { urlDoc = assistanceDocumentationUrlCandidat; } } - - if (urlDoc!=null && !urlDoc.equals("")){ - vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnDoc", null, UI.getCurrent().getLocale()), urlDoc ,FontAwesome.FILE_TEXT)); + + if (urlDoc != null && !urlDoc.equals("")) { + vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnDoc", null, UI.getCurrent().getLocale()), urlDoc, FontAwesome.FILE_TEXT)); find = true; } /* Envoyer un ticket */ - if (isPersonnel){ - if (assistanceHelpdeskUrl!=null && !assistanceHelpdeskUrl.equals("")){ - vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnHelpdesk", null, UI.getCurrent().getLocale()), assistanceHelpdeskUrl ,FontAwesome.AMBULANCE)); + if (isPersonnel) { + if (assistanceHelpdeskUrl != null && !assistanceHelpdeskUrl.equals("")) { + vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnHelpdesk", null, UI.getCurrent().getLocale()), assistanceHelpdeskUrl, FontAwesome.AMBULANCE)); find = true; } } - /* Envoyer un mail */ - if (assistanceContactMail!=null && !assistanceContactMail.equals("")){ - vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnContact", new Object[] {assistanceContactMail}, UI.getCurrent().getLocale()), "mailto: " + assistanceContactMail, FontAwesome.ENVELOPE)); + if (assistanceContactMail != null && !assistanceContactMail.equals("")) { + vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnContact", new Object[] { assistanceContactMail }, UI.getCurrent().getLocale()), "mailto: " + assistanceContactMail, FontAwesome.ENVELOPE)); find = true; } - - if (!find){ - vlContent.addComponent(new Label(applicationContext.getMessage("assistanceView.noDoc", null, UI.getCurrent().getLocale()),ContentMode.HTML)); + + /* Url de contact */ + if (assistanceContactUrl != null && !assistanceContactUrl.equals("")) { + vlContent.addComponent(getButton(applicationContext.getMessage(NAME + ".btnContactUrl", new Object[] { assistanceContactUrl }, UI.getCurrent().getLocale()), assistanceContactUrl, FontAwesome.EXTERNAL_LINK_SQUARE)); + find = true; + } + + if (!find) { + vlContent.addComponent(new Label(applicationContext.getMessage("assistanceView.noDoc", null, UI.getCurrent().getLocale()), ContentMode.HTML)); } } /** - * @param caption - * @param bwo - * @param icon - * @return un bouton pour l'assistance + * @param caption + * @param bwo + * @param icon + * @return un bouton pour l'assistance */ - private OneClickButton getButton(String caption, String bwo, com.vaadin.server.Resource icon){ - BrowserWindowOpener browser = new BrowserWindowOpener(new ExternalResource(bwo)); - OneClickButton btn = new OneClickButton(caption, icon); + private OneClickButton getButton(final String caption, final String bwo, final com.vaadin.server.Resource icon) { + final BrowserWindowOpener browser = new BrowserWindowOpener(new ExternalResource(bwo)); + final OneClickButton btn = new OneClickButton(caption, icon); btn.addStyleName(ValoTheme.BUTTON_LINK); browser.extend(btn); return btn; @@ -185,7 +188,7 @@ private OneClickButton getButton(String caption, String bwo, com.vaadin.server.R * @see com.vaadin.navigator.View#enter(com.vaadin.navigator.ViewChangeListener.ViewChangeEvent) */ @Override - public void enter(ViewChangeEvent event) { + public void enter(final ViewChangeEvent event) { } } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatAdminWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatAdminWindow.java index 33547b80..c1c174c5 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatAdminWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatAdminWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -28,7 +27,6 @@ import com.vaadin.data.validator.EmailValidator; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; -import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import com.vaadin.ui.Field; import com.vaadin.ui.FormLayout; import com.vaadin.ui.HorizontalLayout; @@ -40,22 +38,26 @@ import fr.univlorraine.ecandidat.controllers.CandidatController; import fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima; import fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima_; +import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.vaadin.form.CustomBeanFieldGroup; import fr.univlorraine.ecandidat.vaadin.form.RequiredTextField; /** * Fenêtre d'édition de compte a minima par un admin * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class CandidatAdminWindow extends Window { - - /** serialVersionUID **/ - private static final long serialVersionUID = -8599557648673448835L; - public static final String[] FIELDS_ORDER = {CompteMinima_.nomCptMin.getName(),CompteMinima_.prenomCptMin.getName(),CompteMinima_.mailPersoCptMin.getName(), - CompteMinima_.loginCptMin.getName(), CompteMinima_.supannEtuIdCptMin.getName(), CompteMinima_.temValidCptMin.getName(), CompteMinima_.temValidMailCptMin.getName(), CompteMinima_.temFcCptMin.getName()}; + public static final String[] FIELDS_ORDER = { CompteMinima_.nomCptMin.getName(), + CompteMinima_.prenomCptMin.getName(), + CompteMinima_.mailPersoCptMin.getName(), + CompteMinima_.loginCptMin.getName(), + CompteMinima_.supannEtuIdCptMin.getName(), + CompteMinima_.temValidCptMin.getName(), + CompteMinima_.temValidMailCptMin.getName(), + CompteMinima_.temFcCptMin.getName() }; @Resource private transient ApplicationContext applicationContext; @@ -72,15 +74,15 @@ public class CandidatAdminWindow extends Window { * Crée une fenêtre d'édition de cptMin * @param cptMin la cptMin à éditer */ - public CandidatAdminWindow(CompteMinima cptMin) { + public CandidatAdminWindow(final CompteMinima cptMin) { /* Style */ setModal(true); - setWidth(550,Unit.PIXELS); + setWidth(550, Unit.PIXELS); setResizable(true); setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); @@ -92,26 +94,26 @@ public CandidatAdminWindow(CompteMinima cptMin) { /* Formulaire */ fieldGroup = new CustomBeanFieldGroup<>(CompteMinima.class); fieldGroup.setItemDataSource(cptMin); - FormLayout formLayout = new FormLayout(); + final FormLayout formLayout = new FormLayout(); formLayout.setWidth(100, Unit.PERCENTAGE); formLayout.setSpacing(true); - for (String fieldName : FIELDS_ORDER) { - String caption = applicationContext.getMessage("compteMinima.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER) { + final String caption = applicationContext.getMessage("compteMinima.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); - if (fieldName.equals(CompteMinima_.mailPersoCptMin.getName())){ - field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, Locale.getDefault()))); + if (fieldName.equals(CompteMinima_.mailPersoCptMin.getName())) { + field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); } formLayout.addComponent(field); } - - RequiredTextField loginField = (RequiredTextField)fieldGroup.getField(CompteMinima_.loginCptMin.getName()); - RequiredTextField etuIdField = (RequiredTextField)fieldGroup.getField(CompteMinima_.supannEtuIdCptMin.getName()); + + final RequiredTextField loginField = (RequiredTextField) fieldGroup.getField(CompteMinima_.loginCptMin.getName()); + final RequiredTextField etuIdField = (RequiredTextField) fieldGroup.getField(CompteMinima_.supannEtuIdCptMin.getName()); layout.addComponent(formLayout); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -122,23 +124,23 @@ public CandidatAdminWindow(CompteMinima cptMin) { buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); btnEnregistrer = new OneClickButton(applicationContext.getMessage("btnSave", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); - btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); + btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); btnEnregistrer.addClickListener(e -> { try { - /*Si le code existe dejà --> erreur*/ - if (candidatController.isLoginPresent(loginField.getValue(), cptMin) || candidatController.isSupannEtuIdPresent(etuIdField.getValue(), cptMin)){ + /* Si le code existe dejà --> erreur */ + if (candidatController.isLoginPresent(loginField.getValue(), cptMin) || candidatController.isSupannEtuIdPresent(etuIdField.getValue(), cptMin)) { return; } - + /* Valide la saisie */ fieldGroup.commit(); - + /* Enregistre la cptMin saisie */ candidatAdminWindowListener.btnOkClick(cptMin); - + /* Ferme la fenêtre */ close(); - } catch (CommitException ce) { + } catch (final CommitException ce) { } }); buttonsLayout.addComponent(btnEnregistrer); @@ -147,12 +149,12 @@ public CandidatAdminWindow(CompteMinima cptMin) { /* Centre la fenêtre */ center(); } - + /** * Défini le 'CandidatAdminWindowListener' utilisé * @param candidatAdminWindowListener */ - public void addCandidatAdminWindowListener(CandidatAdminWindowListener candidatAdminWindowListener) { + public void addCandidatAdminWindowListener(final CandidatAdminWindowListener candidatAdminWindowListener) { this.candidatAdminWindowListener = candidatAdminWindowListener; } @@ -163,9 +165,9 @@ public interface CandidatAdminWindowListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * @param cptMin + * @param cptMin */ - public void btnOkClick(CompteMinima cptMin); + void btnOkClick(CompteMinima cptMin); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatCompteMinimaWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatCompteMinimaWindow.java index 67f6f896..87dc8dcf 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatCompteMinimaWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatCompteMinimaWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -28,7 +27,6 @@ import com.vaadin.data.validator.EmailValidator; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; -import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import com.vaadin.ui.Field; import com.vaadin.ui.FormLayout; import com.vaadin.ui.HorizontalLayout; @@ -43,28 +41,24 @@ import fr.univlorraine.ecandidat.controllers.CandidatController; import fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima; import fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima_; +import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.vaadin.form.CustomBeanFieldGroup; import fr.univlorraine.ecandidat.vaadin.form.RequiredTextField; /** * Fenêtre d'édition de compte a minima * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class CandidatCompteMinimaWindow extends Window { - /** serialVersionUID **/ - private static final long serialVersionUID = 1789664007659398677L; - private static final String codeConfirmMailPerso = "confirmMailPersoCptMin"; - public static final String[] FIELDS_ORDER_CPT_MIN = {CompteMinima_.nomCptMin.getName(),CompteMinima_.prenomCptMin.getName(),CompteMinima_.mailPersoCptMin.getName(),codeConfirmMailPerso}; - public static final String[] FIELDS_ORDER_MAIL = {CompteMinima_.mailPersoCptMin.getName(),codeConfirmMailPerso}; + public static final String[] FIELDS_ORDER_CPT_MIN = { CompteMinima_.nomCptMin.getName(), CompteMinima_.prenomCptMin.getName(), CompteMinima_.mailPersoCptMin.getName(), codeConfirmMailPerso }; + public static final String[] FIELDS_ORDER_MAIL = { CompteMinima_.mailPersoCptMin.getName(), codeConfirmMailPerso }; public String[] FIELDS_ORDER; - - @Resource private transient ApplicationContext applicationContext; @Resource @@ -80,71 +74,70 @@ public class CandidatCompteMinimaWindow extends Window { * Crée une fenêtre d'édition de compteMinima * @param compteMinima la compteMinima à éditer */ - public CandidatCompteMinimaWindow(CompteMinima compteMinima, Boolean changementMail, Boolean createByGestionnaire) { - if (changementMail){ + public CandidatCompteMinimaWindow(final CompteMinima compteMinima, final Boolean changementMail, final Boolean createByGestionnaire) { + if (changementMail) { FIELDS_ORDER = FIELDS_ORDER_MAIL; - }else{ + } else { FIELDS_ORDER = FIELDS_ORDER_CPT_MIN; } /* Style */ setModal(true); - setWidth(550,Unit.PIXELS); + setWidth(550, Unit.PIXELS); setResizable(true); setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); setContent(layout); /* Titre */ - if (changementMail){ + if (changementMail) { setCaption(applicationContext.getMessage("compteMinima.editmail.title", null, UI.getCurrent().getLocale())); layout.addComponent(new Label(applicationContext.getMessage("compteMinima.editmail.warning", null, UI.getCurrent().getLocale()))); - }else{ + } else { setCaption(applicationContext.getMessage("compteMinima.window", null, UI.getCurrent().getLocale())); - if (!createByGestionnaire){ - layout.addComponent(new Label(applicationContext.getMessage("compteMinima.create.warning", null, UI.getCurrent().getLocale()))); - } + if (!createByGestionnaire) { + layout.addComponent(new Label(applicationContext.getMessage("compteMinima.create.warning", null, UI.getCurrent().getLocale()))); + } } /* Formulaire */ fieldGroup = new CustomBeanFieldGroup<>(CompteMinima.class); fieldGroup.setItemDataSource(compteMinima); - FormLayout formLayout = new FormLayout(); + final FormLayout formLayout = new FormLayout(); formLayout.setWidth(100, Unit.PERCENTAGE); formLayout.setSpacing(true); - for (String fieldName : FIELDS_ORDER) { - String caption = applicationContext.getMessage("compteMinima.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER) { + final String caption = applicationContext.getMessage("compteMinima.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); - if (fieldName.equals(CompteMinima_.mailPersoCptMin.getName()) || fieldName.equals(codeConfirmMailPerso)){ - field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, Locale.getDefault()))); - if (fieldName.equals(codeConfirmMailPerso)){ + if (fieldName.equals(CompteMinima_.mailPersoCptMin.getName()) || fieldName.equals(codeConfirmMailPerso)) { + field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); + if (fieldName.equals(codeConfirmMailPerso)) { field.setRequired(true); field.setRequiredError(applicationContext.getMessage("validation.obigatoire", null, UI.getCurrent().getLocale())); } } formLayout.addComponent(field); } - - RequiredTextField eMailField = ((RequiredTextField)fieldGroup.getField(CompteMinima_.mailPersoCptMin.getName())); - RequiredTextField eMailConfirmField = ((RequiredTextField)fieldGroup.getField(codeConfirmMailPerso)); - - - /*Link morevaadin = new Link("More Vaadin", new ExternalResource("http://morevaadin.com/")); - new TooltipExtension().extend(morevaadin); - layout.addComponent(morevaadin);*/ - + + final RequiredTextField eMailField = ((RequiredTextField) fieldGroup.getField(CompteMinima_.mailPersoCptMin.getName())); + final RequiredTextField eMailConfirmField = ((RequiredTextField) fieldGroup.getField(codeConfirmMailPerso)); + + /* Link morevaadin = new Link("More Vaadin", new ExternalResource("http://morevaadin.com/")); + * new TooltipExtension().extend(morevaadin); + * layout.addComponent(morevaadin); */ + //new TooltipExtension().extend(eMailConfirmField); //eMailField.setValue("kevin.hergalant@univ-lorraine.fr"); layout.addComponent(formLayout); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -155,38 +148,43 @@ public CandidatCompteMinimaWindow(CompteMinima compteMinima, Boolean changementM buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); btnEnregistrer = new OneClickButton(applicationContext.getMessage("btnSave", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); - btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); + btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); btnEnregistrer.addClickListener(e -> { - try { - /*Verif la confirmation de mail est égale au mail*/ - if (eMailField.getValue()!=null && !eMailField.getValue().equals("") && eMailConfirmField.getValue()!=null && !eMailConfirmField.getValue().equals("") && - eMailField.isValid() && eMailConfirmField.isValid() && - !eMailConfirmField.getValue().equals(eMailField.getValue())){ + try { + /* Verif la confirmation de mail est égale au mail */ + if (eMailField.getValue() != null && !eMailField.getValue().equals("") + && eMailConfirmField.getValue() != null + && !eMailConfirmField.getValue().equals("") + && + eMailField.isValid() + && eMailConfirmField.isValid() + && + !eMailConfirmField.getValue().equals(eMailField.getValue())) { Notification.show(applicationContext.getMessage("compteMinima.mail.confirm.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } - - /*Verif meme mail*/ - if (changementMail && eMailField.getValue()!=null && eMailField.getValue().equals(compteMinima.getMailPersoCptMin())){ + + /* Verif meme mail */ + if (changementMail && eMailField.getValue() != null && eMailField.getValue().equals(compteMinima.getMailPersoCptMin())) { Notification.show(applicationContext.getMessage("compteMinima.editmail.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } - /*Verif de l'adresse mail*/ - if (candidatController.searchCptMinByEMail(eMailField.getValue()) != null){ + /* Verif de l'adresse mail */ + if (candidatController.searchCptMinByEMail(eMailField.getValue()) != null) { Notification.show(applicationContext.getMessage("compteMinima.mail.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return; } - + /* Valide la saisie */ fieldGroup.commit(); /* Enregistre la compteMinima saisie */ - if (compteMinimaWindowListener != null){ + if (compteMinimaWindowListener != null) { compteMinimaWindowListener.btnOkClick(compteMinima); } - + /* Ferme la fenêtre */ close(); - } catch (CommitException ce) { + } catch (final CommitException ce) { } }); buttonsLayout.addComponent(btnEnregistrer); @@ -195,12 +193,12 @@ public CandidatCompteMinimaWindow(CompteMinima compteMinima, Boolean changementM /* Centre la fenêtre */ center(); } - + /** * Défini le 'CompteMinimaWindowListener' utilisé * @param compteMinimaWindowListener */ - public void addCompteMinimaWindowListener(CompteMinimaWindowListener compteMinimaWindowListener) { + public void addCompteMinimaWindowListener(final CompteMinimaWindowListener compteMinimaWindowListener) { this.compteMinimaWindowListener = compteMinimaWindowListener; } @@ -211,9 +209,9 @@ public interface CompteMinimaWindowListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * @param cptMin + * @param cptMin */ - public void btnOkClick(CompteMinima cptMin); + void btnOkClick(CompteMinima cptMin); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatIdOublieWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatIdOublieWindow.java index 557f977e..2523a971 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatIdOublieWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatIdOublieWindow.java @@ -16,8 +16,6 @@ */ package fr.univlorraine.ecandidat.views.windows; -import java.util.Locale; - import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Configurable; @@ -26,7 +24,6 @@ import com.vaadin.data.validator.EmailValidator; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; -import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import com.vaadin.ui.FormLayout; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; @@ -37,72 +34,71 @@ import fr.univlorraine.ecandidat.controllers.CandidatController; import fr.univlorraine.ecandidat.utils.ConstanteUtils; +import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.vaadin.form.RequiredTextField; /** * Fenêtre de demande d'envoie d'identifiant * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@Configurable(preConstruction = true) public class CandidatIdOublieWindow extends Window { - + /** serialVersionUID **/ private static final long serialVersionUID = 8279285838139858898L; - @Resource private transient ApplicationContext applicationContext; @Resource private transient CandidatController candidatController; /* Composants */ - private OneClickButton btnEnregistrer; - private OneClickButton btnAnnuler; + private final OneClickButton btnEnregistrer; + private final OneClickButton btnAnnuler; /** * Crée une fenêtre de demande d'envoie d'identifiant ou de code d'activation */ - public CandidatIdOublieWindow(String mode) { + public CandidatIdOublieWindow(final String mode) { /* Style */ setModal(true); - setWidth(600,Unit.PIXELS); + setWidth(600, Unit.PIXELS); setResizable(true); setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); setContent(layout); /* Titre */ - if (mode.equals(ConstanteUtils.FORGOT_MODE_ID_OUBLIE)){ + if (mode.equals(ConstanteUtils.FORGOT_MODE_ID_OUBLIE)) { setCaption(applicationContext.getMessage("compteMinima.id.oublie.title", null, UI.getCurrent().getLocale())); layout.addComponent(new Label(applicationContext.getMessage("compteMinima.id.oublie", null, UI.getCurrent().getLocale()))); - }else{ + } else { setCaption(applicationContext.getMessage("compteMinima.code.oublie.title", null, UI.getCurrent().getLocale())); layout.addComponent(new Label(applicationContext.getMessage("compteMinima.code.oublie", null, UI.getCurrent().getLocale()))); } /* Formulaire */ - FormLayout formLayout = new FormLayout(); + final FormLayout formLayout = new FormLayout(); formLayout.setWidth(100, Unit.PERCENTAGE); formLayout.setSpacing(true); - - RequiredTextField rtf = new RequiredTextField(); + + final RequiredTextField rtf = new RequiredTextField(); rtf.setRequiredError(applicationContext.getMessage("validation.obigatoire", null, UI.getCurrent().getLocale())); rtf.setNullRepresentation(""); rtf.setRequired(true); rtf.setCaption(applicationContext.getMessage("compteMinima.table.mailPersoCptMin", null, UI.getCurrent().getLocale())); - rtf.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, Locale.getDefault()))); + rtf.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); rtf.setWidth(100, Unit.PERCENTAGE); formLayout.addComponent(rtf); layout.addComponent(formLayout); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -113,15 +109,15 @@ public CandidatIdOublieWindow(String mode) { buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); btnEnregistrer = new OneClickButton(applicationContext.getMessage("btnSend", null, UI.getCurrent().getLocale()), FontAwesome.SEND); - btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); + btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); btnEnregistrer.addClickListener(e -> { rtf.preCommit(); - if (rtf.isValid()){ - if (candidatController.initPasswordOrActivationCode(rtf.getValue(), mode)){ + if (rtf.isValid()) { + if (candidatController.initPasswordOrActivationCode(rtf.getValue(), mode)) { close(); } } - + }); buttonsLayout.addComponent(btnEnregistrer); buttonsLayout.setComponentAlignment(btnEnregistrer, Alignment.MIDDLE_RIGHT); diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatInfoPersoWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatInfoPersoWindow.java index 9ec94051..a77adc99 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatInfoPersoWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CandidatInfoPersoWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.text.SimpleDateFormat; -import java.util.Locale; import javax.annotation.Resource; @@ -68,7 +67,6 @@ /** * Fenêtre d'édition d'info perso - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @@ -77,11 +75,20 @@ public class CandidatInfoPersoWindow extends Window { private static final String CHAMPS_INE_AND_FIELD = "ineAndKey"; - public static final String[] FIELDS_ORDER_1 = {Candidat_.siScolPaysNat.getName(), CHAMPS_INE_AND_FIELD}; - - public static final String[] FIELDS_ORDER_2 = {Candidat_.civilite.getName(), Candidat_.nomPatCandidat.getName(), Candidat_.nomUsuCandidat.getName(), Candidat_.prenomCandidat.getName(), - Candidat_.autrePrenCandidat.getName(), Candidat_.datNaissCandidat.getName(), Candidat_.siScolPaysNaiss.getName(), Candidat_.siScolDepartement.getName(), - Candidat_.libVilleNaissCandidat.getName(), Candidat_.langue.getName(), Candidat_.telCandidat.getName(), Candidat_.telPortCandidat.getName()}; + public static final String[] FIELDS_ORDER_1 = { Candidat_.siScolPaysNat.getName(), CHAMPS_INE_AND_FIELD }; + + public static final String[] FIELDS_ORDER_2 = { Candidat_.civilite.getName(), + Candidat_.nomPatCandidat.getName(), + Candidat_.nomUsuCandidat.getName(), + Candidat_.prenomCandidat.getName(), + Candidat_.autrePrenCandidat.getName(), + Candidat_.datNaissCandidat.getName(), + Candidat_.siScolPaysNaiss.getName(), + Candidat_.siScolDepartement.getName(), + Candidat_.libVilleNaissCandidat.getName(), + Candidat_.langue.getName(), + Candidat_.telCandidat.getName(), + Candidat_.telPortCandidat.getName() }; @Resource private transient ApplicationContext applicationContext; @@ -96,7 +103,7 @@ public class CandidatInfoPersoWindow extends Window { @Resource private transient DemoController demoController; - private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy"); + private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy"); private CandidatWindowListener candidatWindowListener; @@ -132,9 +139,8 @@ public class CandidatInfoPersoWindow extends Window { /** * Crée une fenêtre d'édition de candidat - * * @param candidat - * le candidat à éditer + * le candidat à éditer */ public CandidatInfoPersoWindow(final Candidat candidat) { /* Style */ @@ -144,7 +150,7 @@ public CandidatInfoPersoWindow(final Candidat candidat) { setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); // layout.setSizeFull(); layout.setMargin(true); @@ -182,19 +188,19 @@ public CandidatInfoPersoWindow(final Candidat candidat) { /* Formulaire */ - for (String fieldName : FIELDS_ORDER_1) { - String caption = applicationContext.getMessage("infoperso.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER_1) { + final String caption = applicationContext.getMessage("infoperso.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); layoutParamINE.addComponent(field); } - for (String fieldName : FIELDS_ORDER_2) { + for (final String fieldName : FIELDS_ORDER_2) { if (fieldName.equals(Candidat_.langue.getName()) && cacheController.getLangueEnServiceWithoutDefault().size() == 0) { continue; } - String caption = applicationContext.getMessage("infoperso.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + final String caption = applicationContext.getMessage("infoperso.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); layoutParamGen.addComponent(field); } @@ -202,7 +208,7 @@ public CandidatInfoPersoWindow(final Candidat candidat) { initForm(); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -246,7 +252,7 @@ public CandidatInfoPersoWindow(final Candidat candidat) { /* Ferme la fenêtre */ close(); - } catch (CommitException ce) { + } catch (final CommitException ce) { } }); @@ -259,31 +265,28 @@ public CandidatInfoPersoWindow(final Candidat candidat) { /** * CLique sur le bouton next - * * @param ineField * @param natField */ private void nextIne(final Candidat candidat) { /* Verif que le champs INE est valide */ - Boolean valid = validateIneField(candidat); + final Boolean valid = validateIneField(candidat); /* Si champs INE valide */ if (valid) { try { - /* - * On vérifie que : + /* On vérifie que : * On est en mode Apogée * Que le champs INE n'est pas vide * Que le champs INE a changé - * Que le champs clé INE a changé - */ + * Que le champs clé INE a changé */ String ineAndKeyCandidat = null; if (candidat.getIneCandidat() != null && candidat.getCleIneCandidat() != null) { ineAndKeyCandidat = candidat.getIneCandidat() + candidat.getCleIneCandidat(); } if (parametreController.getSiScolMode().equals(ConstanteUtils.SI_SCOL_APOGEE) - && (!(ineAndKeyField.getValue() == null) && !ineAndKeyField.getValue().equals("") && !ineAndKeyField.getValue().equals(ineAndKeyCandidat))) { + && (!(ineAndKeyField.getValue() == null) && !ineAndKeyField.getValue().equals("") && !ineAndKeyField.getValue().equals(ineAndKeyCandidat))) { /* Vérification qu'il n'y a pas de lock sur le canddiat + adresse + info perso */ if (candidatController.isLockedForImportApo(candidat.getCompteMinima())) { @@ -299,12 +302,16 @@ private void nextIne(final Candidat candidat) { /* Si tout est ok-->on récupère les nouvelles infos apogée et on traite ces données */ if (individuApogee != null) { - String prenom = individuApogee.getLibPr1Ind(); - String nom = individuApogee.getLibNomPatInd() == null ? individuApogee.getLibNomUsuInd() : individuApogee.getLibNomPatInd(); - String date = individuApogee.getDateNaiInd() == null ? null : simpleDateFormat.format(individuApogee.getDateNaiInd()); - - ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.apogee", new Object[] {prenom, nom, - date}, UI.getCurrent().getLocale()), applicationContext.getMessage("infoperso.confirm.apogeeTitle", null, UI.getCurrent().getLocale())); + final String prenom = individuApogee.getLibPr1Ind(); + final String nom = individuApogee.getLibNomPatInd() == null ? individuApogee.getLibNomUsuInd() : individuApogee.getLibNomPatInd(); + final String date = individuApogee.getDateNaiInd() == null ? null : simpleDateFormat.format(individuApogee.getDateNaiInd()); + + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.apogee", + new Object[] + { prenom, + nom, + date }, + UI.getCurrent().getLocale()), applicationContext.getMessage("infoperso.confirm.apogeeTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(e -> { fieldGroup.getItemDataSource().getBean().setTemUpdatableCandidat(false); initSecondLayout(); @@ -321,8 +328,8 @@ private void nextIne(final Candidat candidat) { if (!candidat.getTemUpdatableCandidat()) { cleanDataApogee(candidat); } else { - ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.not.apogee", null, UI.getCurrent().getLocale()), - applicationContext.getMessage("infoperso.confirm.changeto.not.apogeeTitle", null, UI.getCurrent().getLocale())); + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.not.apogee", null, UI.getCurrent().getLocale()), + applicationContext.getMessage("infoperso.confirm.changeto.not.apogeeTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(e -> { fieldGroup.getItemDataSource().getBean().setTemUpdatableCandidat(true); initSecondLayout(); @@ -341,7 +348,7 @@ private void nextIne(final Candidat candidat) { initSecondLayout(); } center(); - } catch (SiScolException e) { + } catch (final SiScolException e) { Notification.show(applicationContext.getMessage("siscol.connect.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); } } else { @@ -351,12 +358,11 @@ private void nextIne(final Candidat candidat) { /** * Nettoie les donénes apogée ramenées précédement - * * @param candidat */ private void cleanDataApogee(final Candidat candidat) { - ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.changeto.not.apogee", null, UI.getCurrent().getLocale()), - applicationContext.getMessage("infoperso.confirm.changeto.not.apogeeTitle", null, UI.getCurrent().getLocale())); + final ConfirmWindow confirmWindow = new ConfirmWindow(applicationContext.getMessage("infoperso.confirm.changeto.not.apogee", null, UI.getCurrent().getLocale()), + applicationContext.getMessage("infoperso.confirm.changeto.not.apogeeTitle", null, UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(e -> { needToDeleteDataApogee = true; dptField.setValue(null); @@ -437,7 +443,7 @@ private void initDataApogee() { /* Champs libVilleNaissCandidat */ libVilleNaissCandidatField.setValue(individuApogee.getLibVilNaiEtu()); - WSAdresse adr = individuApogee.getAdresse(); + final WSAdresse adr = individuApogee.getAdresse(); if (adr != null) { /* Champs telCandidat */ telCandidatField.setValue(adr.getNumTel()); @@ -455,12 +461,11 @@ private void initDataApogee() { /** * Valide l'ine - * - * @param natField - * @param ineField - * @param candidat - * @param candidat - * @return true si l'ine est ok + * @param natField + * @param ineField + * @param candidat + * @param candidat + * @return true si l'ine est ok */ private Boolean validateIneField(final Candidat candidat) { try { @@ -475,7 +480,7 @@ private Boolean validateIneField(final Candidat candidat) { Notification.show(applicationContext.getMessage("infoperso.ine.not.conform", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return false; } - } catch (Exception e) { + } catch (final Exception e) { Notification.show(applicationContext.getMessage("infoperso.ine.verif.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); return false; } @@ -483,7 +488,7 @@ private Boolean validateIneField(final Candidat candidat) { if (!demoController.getDemoMode() && candidatController.isINEPresent(ineAndKeyField.getValue(), candidat)) { return false; } - } catch (InvalidValueException e) { + } catch (final InvalidValueException e) { return false; } return true; @@ -491,23 +496,21 @@ private Boolean validateIneField(final Candidat candidat) { /** * Valide un champs - * - * @param field + * @param field * @throws InvalidValueException */ private void validateField(final Field field) throws InvalidValueException { try { - IRequiredField reqField = (IRequiredField) field; + final IRequiredField reqField = (IRequiredField) field; reqField.preCommit(); field.validate(); - } catch (InvalidValueException e) { + } catch (final InvalidValueException e) { throw e; } } /** * Passe le champs en majuscule - * * @param field */ private void toUpperCase(final RequiredTextField field) { @@ -519,7 +522,7 @@ private void toUpperCase(final RequiredTextField field) { /** Initialise le formulaire */ @SuppressWarnings("unchecked") private void initForm() { - Candidat candidat = fieldGroup.getItemDataSource().getBean(); + final Candidat candidat = fieldGroup.getItemDataSource().getBean(); /* Initialisation des champs */ paysField = (ComboBoxPays) fieldGroup.getField(Candidat_.siScolPaysNaiss.getName()); @@ -543,7 +546,7 @@ private void initForm() { natField = (ComboBoxPays) fieldGroup.getField(Candidat_.siScolPaysNat.getName()); /* No tel expression reguliere */ - RegexpValidator telValidator = new RegexpValidator(ConstanteUtils.regExNoTel, applicationContext.getMessage("validation.error.tel", null, Locale.getDefault())); + final RegexpValidator telValidator = new RegexpValidator(ConstanteUtils.regExNoTel, applicationContext.getMessage("validation.error.tel", null, UI.getCurrent().getLocale())); telCandidatField.addValidator(telValidator); telPortCandidatField.addValidator(telValidator); @@ -555,31 +558,30 @@ private void initForm() { ineAndKeyField.setValue(individuApogee.getCodNneInd() + individuApogee.getCodCleNneInd()); ineAndKeyField.setEnabled(false); } - } catch (SiScolException e1) { + } catch (final SiScolException e1) { Notification.show(applicationContext.getMessage("siscol.connect.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); close(); } // si le candidat à un INE et supannEtuId valué, on bloque la saisie de l'INE - } else if (candidat.getIneCandidat() != null && !candidat.getIneCandidat().equals("") && candidat.getCompteMinima().getSupannEtuIdCptMin() != null - && !candidat.getCompteMinima().getSupannEtuIdCptMin().equals("")) { + } else if (candidat.getIneCandidat() != null && !candidat.getIneCandidat().equals("") + && candidat.getCompteMinima().getSupannEtuIdCptMin() != null + && !candidat.getCompteMinima().getSupannEtuIdCptMin().equals("")) { ineAndKeyField.setEnabled(false); } /* ajout des listeners */ /* Champs nationalité */ natField.setToNationalite(applicationContext.getMessage("infoperso.table.siScolPaysNat.suggest", null, UI.getCurrent().getLocale())); - /* - * natField.addValueChangeListener(e->{ + /* natField.addValueChangeListener(e->{ * if (e.getProperty().getValue() instanceof SiScolPays){ * SiScolPays nationaliteSelected = (SiScolPays)e.getProperty().getValue() ; * initNationalite(nationaliteSelected); * } - * }); - */ + * }); */ /* Champs pays */ paysField.addValueChangeListener(e -> { if (e.getProperty().getValue() instanceof SiScolPays) { - SiScolPays paysSelected = (SiScolPays) e.getProperty().getValue(); + final SiScolPays paysSelected = (SiScolPays) e.getProperty().getValue(); initPays(paysSelected, dptField, null); } }); @@ -603,21 +605,17 @@ private void initForm() { /** * Initialise la nationalité - * * @param nationalite * @param INEField * @param cleIneField */ - /* - * private void initNationalite(SiScolPays nationalite){ + /* private void initNationalite(SiScolPays nationalite){ * changeRequired(ineField,candidatController.getINEObligatoire(nationalite)); * changeRequired(cleIneField,candidatController.getINEObligatoire(nationalite)); - * } - */ + * } */ /** * Initialise la combo pays - * * @param pays * @param dptField * @param siScolDepartement @@ -640,7 +638,6 @@ private void initPays(final SiScolPays pays, final ComboBoxDepartement dptField, /** * Change l'etat obligatoire d'un champs - * * @param field * @param isRequired */ @@ -655,7 +652,6 @@ private void changeRequired(final Field field, final Boolean isRequired) { /** * Défini le 'CandidatWindowListener' utilisé - * * @param candidatWindowListener */ public void addCandidatWindowListener(final CandidatWindowListener candidatWindowListener) { @@ -667,7 +663,6 @@ public interface CandidatWindowListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * * @param candidat * @param individu * @param needToDeleteDataApogee diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandCommissionWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandCommissionWindow.java index 453ebc97..1c8aa20f 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandCommissionWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandCommissionWindow.java @@ -16,8 +16,6 @@ */ package fr.univlorraine.ecandidat.views.windows; -import java.util.Locale; - import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Configurable; @@ -48,26 +46,35 @@ import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.vaadin.form.CustomBeanFieldGroup; import fr.univlorraine.ecandidat.vaadin.form.RequiredTextArea; +import fr.univlorraine.ecandidat.vaadin.form.UrlValidator; import fr.univlorraine.ecandidat.vaadin.form.i18n.I18nField; import fr.univlorraine.ecandidat.vaadin.form.siscol.AdresseForm; /** * Fenêtre d'édition de commission - * * @author Kevin Hergalant */ +@SuppressWarnings("serial") @Configurable(preConstruction = true) public class CtrCandCommissionWindow extends Window { - /** serialVersionUID **/ - private static final long serialVersionUID = 8279285838139858898L; - - public static final String[] FIELDS_ORDER_GEN = {Commission_.codComm.getName(), Commission_.libComm.getName(), Commission_.tesComm.getName(), - Commission_.mailComm.getName(), Commission_.telComm.getName(), Commission_.faxComm.getName(), Commission_.i18nCommentRetourComm.getName()}; - - public static final String[] FIELDS_ORDER_ALERT = {Commission_.temAlertPropComm.getName(), Commission_.temAlertAnnulComm.getName(), Commission_.temAlertTransComm.getName(), - Commission_.temAlertDesistComm.getName(), Commission_.temAlertListePrincComm.getName()}; - public static final String[] FIELDS_ORDER_SIGN = {Commission_.temEditLettreComm.getName(), Commission_.temMailLettreComm.getName(), Commission_.signataireComm.getName()}; + public static final String[] FIELDS_ORDER_GEN = { Commission_.codComm.getName(), + Commission_.libComm.getName(), + Commission_.tesComm.getName(), + Commission_.mailComm.getName(), + Commission_.urlComm.getName(), + Commission_.telComm.getName(), + Commission_.faxComm.getName(), + Commission_.i18nCommentRetourComm.getName() }; + + public static final String[] FIELDS_ORDER_ALERT = { + Commission_.mailAlertComm.getName(), + Commission_.temAlertPropComm.getName(), + Commission_.temAlertAnnulComm.getName(), + Commission_.temAlertTransComm.getName(), + Commission_.temAlertDesistComm.getName(), + Commission_.temAlertListePrincComm.getName() }; + public static final String[] FIELDS_ORDER_SIGN = { Commission_.temEditLettreComm.getName(), Commission_.temMailLettreComm.getName(), Commission_.signataireComm.getName() }; @Resource private transient ApplicationContext applicationContext; @@ -83,9 +90,8 @@ public class CtrCandCommissionWindow extends Window { /** * Crée une fenêtre d'édition de commission - * * @param commission - * la commission à éditer + * la commission à éditer * @param isAdmin */ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmin) { @@ -96,7 +102,7 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); @@ -122,28 +128,28 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi layout.addComponent(sheet); /* Formulaire général */ - FormLayout layoutParamGen = new FormLayout(); + final FormLayout layoutParamGen = new FormLayout(); layoutParamGen.setSizeFull(); layoutParamGen.setSpacing(true); layoutParamGen.setMargin(true); sheet.addTab(layoutParamGen, applicationContext.getMessage("commission.window.sheet.gen", null, UI.getCurrent().getLocale())); /* Layout adresse */ - VerticalLayout vlAdresse = new VerticalLayout(); + final VerticalLayout vlAdresse = new VerticalLayout(); vlAdresse.setSpacing(true); vlAdresse.setMargin(true); - OneClickButton btnImport = new OneClickButton(applicationContext.getMessage("commission.window.import.adr", null, UI.getCurrent().getLocale())); + final OneClickButton btnImport = new OneClickButton(applicationContext.getMessage("commission.window.import.adr", null, UI.getCurrent().getLocale())); if (!isAdmin) { btnImport.setEnabled(false); } btnImport.addClickListener(e -> { - SearchCommissionWindow scw = new SearchCommissionWindow(commission.getCentreCandidature()); + final SearchCommissionWindow scw = new SearchCommissionWindow(commission.getCentreCandidature()); scw.addCommissionListener(comm -> { if (fieldGroupAdresse.getItemDataSource() == null || fieldGroupAdresse.getItemDataSource().getBean() == null) { return; } - Adresse adr = fieldGroupAdresse.getItemDataSource().getBean(); + final Adresse adr = fieldGroupAdresse.getItemDataSource().getBean(); adr.duplicateAdresse(comm.getAdresse()); fieldGroupAdresse.setItemDataSource(adr); }); @@ -155,20 +161,20 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi /* Formulaire d'adresse */ fieldGroupAdresse = new CustomBeanFieldGroup<>(Adresse.class, ConstanteUtils.TYP_FORM_ADR); fieldGroupAdresse.setItemDataSource(commission.getAdresse()); - AdresseForm adresseForm = new AdresseForm(fieldGroupAdresse, true); + final AdresseForm adresseForm = new AdresseForm(fieldGroupAdresse, true); vlAdresse.addComponent(adresseForm); vlAdresse.setExpandRatio(adresseForm, 1); sheet.addTab(vlAdresse, applicationContext.getMessage("commission.window.sheet.adr", null, UI.getCurrent().getLocale())); /* Layout des propriétés d'alerte */ - FormLayout layoutAlert = new FormLayout(); + final FormLayout layoutAlert = new FormLayout(); layoutAlert.setSizeFull(); layoutAlert.setSpacing(true); layoutAlert.setMargin(true); sheet.addTab(layoutAlert, applicationContext.getMessage("commission.window.sheet.alert", null, UI.getCurrent().getLocale())); /* Layout pour le signataire */ - VerticalLayout vlSignataire = new VerticalLayout(); + final VerticalLayout vlSignataire = new VerticalLayout(); vlSignataire.setSpacing(true); vlSignataire.setMargin(true); @@ -179,21 +185,21 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi } else { txtInfo = txtInfo + applicationContext.getMessage("commission.window.signataire.info.param", null, UI.getCurrent().getLocale()); } - CustomPanel panelInfo = new CustomPanel(applicationContext.getMessage("informations", null, UI.getCurrent().getLocale()), txtInfo, FontAwesome.INFO_CIRCLE); + final CustomPanel panelInfo = new CustomPanel(applicationContext.getMessage("informations", null, UI.getCurrent().getLocale()), txtInfo, FontAwesome.INFO_CIRCLE); panelInfo.setWidthMax(); vlSignataire.addComponent(panelInfo); /* Formulaire signataire */ - FormLayout layoutSignataire = new FormLayout(); + final FormLayout layoutSignataire = new FormLayout(); layoutSignataire.setSizeFull(); layoutSignataire.setSpacing(true); vlSignataire.addComponent(layoutSignataire); sheet.addTab(vlSignataire, applicationContext.getMessage("commission.window.sheet.signataire", null, UI.getCurrent().getLocale())); /* Ajout des propriétés générales */ - for (String fieldName : FIELDS_ORDER_GEN) { - String caption = applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER_GEN) { + final String caption = applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); /* On interdit les modifs des infos sensibles pour les membres de la commission */ if (!isAdmin && (fieldName.equals(Commission_.codComm.getName()) || fieldName.equals(Commission_.libComm.getName()) || fieldName.equals(Commission_.tesComm.getName()))) { @@ -202,17 +208,20 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi field.setWidth(100, Unit.PERCENTAGE); if (fieldName.equals(Commission_.mailComm.getName())) { - field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, Locale.getDefault()))); + field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); + } + if (fieldName.equals(Commission_.urlComm.getName())) { + field.addValidator(new UrlValidator(applicationContext.getMessage("validation.url.malformed", null, UI.getCurrent().getLocale()))); } if (fieldName.equals(Commission_.telComm.getName()) || fieldName.equals(Commission_.faxComm.getName())) { - field.addValidator(new RegexpValidator(ConstanteUtils.regExNoTel, applicationContext.getMessage("validation.error.tel", null, Locale.getDefault()))); + field.addValidator(new RegexpValidator(ConstanteUtils.regExNoTel, applicationContext.getMessage("validation.error.tel", null, UI.getCurrent().getLocale()))); } layoutParamGen.addComponent(field); } /* I18n */ /* Listener pour centrer la fenetre après ajout de langue */ - I18nField i18nField = ((I18nField) fieldGroup.getField(Commission_.i18nCommentRetourComm.getName())); + final I18nField i18nField = ((I18nField) fieldGroup.getField(Commission_.i18nCommentRetourComm.getName())); i18nField.addCenterListener(e -> { if (e) { center(); @@ -221,13 +230,18 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi i18nField.setNoRequierd(); /* Pour les alertes */ - for (String fieldName : FIELDS_ORDER_ALERT) { - layoutAlert.addComponent(fieldGroup.buildAndBind(applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()), fieldName)); + for (final String fieldName : FIELDS_ORDER_ALERT) { + final Field field = fieldGroup.buildAndBind(applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()), fieldName); + if (fieldName.equals(Commission_.mailAlertComm.getName())) { + field.setWidth(100, Unit.PERCENTAGE); + field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); + } + layoutAlert.addComponent(field); } /* Pour le signataire */ - for (String fieldName : FIELDS_ORDER_SIGN) { - String caption = applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()); + for (final String fieldName : FIELDS_ORDER_SIGN) { + final String caption = applicationContext.getMessage("commission.table." + fieldName, null, UI.getCurrent().getLocale()); Field field; if (fieldName.equals(Commission_.signataireComm.getName())) { field = fieldGroup.buildAndBind(caption, fieldName, RequiredTextArea.class); @@ -239,7 +253,7 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi } /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -276,7 +290,7 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi try { /* Valide la saisie de l'adresse */ fieldGroupAdresse.commit(); - } catch (CommitException ce) { + } catch (final CommitException ce) { displayErrorSheet(true, 1); return; } @@ -287,7 +301,7 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi commissionController.saveCommission(commission, fieldGroupAdresse.getItemDataSource().getBean()); /* Ferme la fenêtre */ close(); - } catch (CommitException ce) { + } catch (final CommitException ce) { sheet.getSheetOnError(ce.getInvalidFields()); } }); @@ -303,7 +317,6 @@ public CtrCandCommissionWindow(final Commission commission, final Boolean isAdmi /** * Affiche les erreur d'un sheet avec un point exclam en logo - * * @param findError * @param tabOrder */ diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandDownloadPJWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandDownloadPJWindow.java index 98265e22..cb52c82c 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandDownloadPJWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/CtrCandDownloadPJWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import javax.annotation.Resource; @@ -75,7 +74,7 @@ public CtrCandDownloadPJWindow(final Commission commission, final List liste = new ArrayList<>(); + final List liste = new ArrayList<>(); // On ajoute les PJ communes de la scole centrale liste.addAll(pieceJustifController.getPieceJustifsByCtrCandEnService(null, true)); + // On ajoute les PJ non communes de la scole centrale + liste.addAll(pieceJustifController.getPieceJustifsByCtrCandEnService(null, false)); + // On ajoute les PJ communes du centre de candidature liste.addAll(pieceJustifController.getPieceJustifsByCtrCandEnService(commission.getCentreCandidature().getIdCtrCand(), true)); // On ajoute les PJ non communes du centre de candidature liste.addAll(pieceJustifController.getPieceJustifsByCtrCandEnService(commission.getCentreCandidature().getIdCtrCand(), false)); - Collections.sort(liste); + /* Tri par ordre */ + //Collections.sort(liste); + + /* Tri par ordre alphabétique */ + liste.sort((o1, o2) -> o1.getLibPj().compareTo(o2.getLibPj())); /* Combobox de choix de la PJ à exporter */ - RequiredComboBox cbPj = new RequiredComboBox<>(liste, PieceJustif.class, false); + final RequiredComboBox cbPj = new RequiredComboBox<>(liste, PieceJustif.class, false); cbPj.setItemCaptionPropertyId(PieceJustif_.libPj.getName()); cbPj.setWidth(70, Unit.PERCENTAGE); layout.addComponent(cbPj); layout.setComponentAlignment(cbPj, Alignment.MIDDLE_CENTER); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); /* Annuler */ - OneClickButton btnAnnuler = new OneClickButton(applicationContext.getMessage("btnAnnuler", null, UI.getCurrent().getLocale()), FontAwesome.TIMES); + final OneClickButton btnAnnuler = new OneClickButton(applicationContext.getMessage("btnAnnuler", null, UI.getCurrent().getLocale()), FontAwesome.TIMES); btnAnnuler.addClickListener(e -> close()); buttonsLayout.addComponent(btnAnnuler); buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); /* Exporter */ - Button btnExport = new Button(applicationContext.getMessage("btnExport", null, UI.getCurrent().getLocale()), FontAwesome.FILE_EXCEL_O); + final Button btnExport = new Button(applicationContext.getMessage("btnExport", null, UI.getCurrent().getLocale()), FontAwesome.FILE_EXCEL_O); btnExport.addStyleName(ValoTheme.BUTTON_PRIMARY); btnExport.setEnabled(false); btnExport.setDisableOnClick(true); @@ -130,7 +136,7 @@ public CtrCandDownloadPJWindow(final Commission commission, final List containerLeftPj; - private BeanItemContainer containerRightPj; - private List listPj = new ArrayList<>(); + private final ListSelect leftSelectPj; + private final ListSelect rightSelectPj; + private final ListSelect communSelectPj; + private final BeanItemContainer containerLeftPj; + private final BeanItemContainer containerRightPj; + private final List listPj = new ArrayList<>(); /* PJ */ - private ListSelect leftSelectFormulaire; - private ListSelect rightSelectFormulaire; - private ListSelect communSelectFormulaire; - private BeanItemContainer containerLeftFormulaire; - private BeanItemContainer containerRightFormulaire; - private List listFormulaire = new ArrayList<>(); + private final ListSelect leftSelectFormulaire; + private final ListSelect rightSelectFormulaire; + private final ListSelect communSelectFormulaire; + private final BeanItemContainer containerLeftFormulaire; + private final BeanItemContainer containerRightFormulaire; + private final List listFormulaire = new ArrayList<>(); /** * Crée une fenêtre d'ajout de pièces complémentaires a une ou plusieurs * formation(s) - * * @param formations * @param ctrCand * @param pieceJustifs * @param formulaires */ @SuppressWarnings("unchecked") - public CtrCandPieceComplementaireWindow(final List formations, final CentreCandidature ctrCand, - final List pieceJustifs, final List formulaires) { + public CtrCandPieceComplementaireWindow(final List formations, + final CentreCandidature ctrCand, + final List pieceJustifs, + final List formulaires) { /* Style */ setModal(true); - setWidth(700, Unit.PIXELS); + setWidth(850, Unit.PIXELS); setImmediate(true); setResizable(true); setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setImmediate(true); layout.setMargin(true); layout.setSpacing(true); @@ -119,14 +119,15 @@ public CtrCandPieceComplementaireWindow(final List formations, final setCaption(applicationContext.getMessage("formation.piececomp.window", null, UI.getCurrent().getLocale())); /* Listes des PJ */ - List listeRightPj = new ArrayList<>(); - List listeLeftPj = new ArrayList<>(); + final List listeRightPj = new ArrayList<>(); + final List listeLeftPj = new ArrayList<>(); /* Construction des listes */ if (pieceJustifs != null && pieceJustifs.size() != 0) { pieceJustifController.getPieceJustifsByCtrCandAndScolCentral(ctrCand.getIdCtrCand()).forEach(e -> { - Optional dp = new ArrayList<>(pieceJustifs).stream() - .filter(pj -> pj.getCodPj().equals(e.getCodPj())).findFirst(); + final Optional dp = new ArrayList<>(pieceJustifs).stream() + .filter(pj -> pj.getCodPj().equals(e.getCodPj())) + .findFirst(); if (dp.isPresent()) { listeRightPj.add(e); listPj.add(e); @@ -144,24 +145,25 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* Listtes de gauche et droite de PJ */ leftSelectPj = new ListSelect( - applicationContext.getMessage("formation.piececomp.pj.dispo", null, UI.getCurrent().getLocale())); + applicationContext.getMessage("formation.piececomp.pj.dispo", null, UI.getCurrent().getLocale())); rightSelectPj = new ListSelect( - applicationContext.getMessage("formation.piececomp.pj.select", null, UI.getCurrent().getLocale())); + applicationContext.getMessage("formation.piececomp.pj.select", null, UI.getCurrent().getLocale())); communSelectPj = new ListSelect( - applicationContext.getMessage("formation.piececomp.pj.commun", null, UI.getCurrent().getLocale())); + applicationContext.getMessage("formation.piececomp.pj.commun", null, UI.getCurrent().getLocale())); initListSelectPj(leftSelectPj, containerLeftPj); initListSelectPj(rightSelectPj, containerRightPj); - initListSelectPj(communSelectPj, new BeanItemContainer<>(PieceJustif.class, + initListSelectPj(communSelectPj, + new BeanItemContainer<>(PieceJustif.class, pieceJustifController.getPieceJustifsCommunCtrCandEnService(ctrCand.getIdCtrCand()))); communSelectPj.setEnabled(false); /* Layout bouton milieu PJ */ - VerticalLayout layoutBtnPj = new VerticalLayout(); + final VerticalLayout layoutBtnPj = new VerticalLayout(); // layoutBtnPj.setImmediate(true); layoutBtnPj.setHeight(100, Unit.PERCENTAGE); layoutBtnPj.setSpacing(true); - OneClickButton btnGoRightPj = new OneClickButton(FontAwesome.ARROW_CIRCLE_RIGHT); - OneClickButton btnGoLeftPj = new OneClickButton(FontAwesome.ARROW_CIRCLE_LEFT); + final OneClickButton btnGoRightPj = new OneClickButton(FontAwesome.ARROW_CIRCLE_RIGHT); + final OneClickButton btnGoLeftPj = new OneClickButton(FontAwesome.ARROW_CIRCLE_LEFT); layoutBtnPj.addComponent(btnGoRightPj); layoutBtnPj.setComponentAlignment(btnGoRightPj, Alignment.BOTTOM_CENTER); layoutBtnPj.addComponent(btnGoLeftPj); @@ -169,7 +171,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* action du bouton mise à droite PJ */ btnGoRightPj.addClickListener(e -> { - Set collectionLeft = (Set) leftSelectPj.getValue(); + final Set collectionLeft = (Set) leftSelectPj.getValue(); collectionLeft.forEach(pj -> { containerLeftPj.removeItem(pj); containerRightPj.addBean(pj); @@ -181,7 +183,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* action du bouton mise à gauche PJ */ btnGoLeftPj.addClickListener(e -> { - Set collectionRight = (Set) rightSelectPj.getValue(); + final Set collectionRight = (Set) rightSelectPj.getValue(); collectionRight.forEach(pj -> { containerRightPj.removeItem(pj); containerLeftPj.addBean(pj); @@ -192,7 +194,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final }); /* Layout contenant les pj */ - HorizontalLayout hlTwinSelectPj = new HorizontalLayout(); + final HorizontalLayout hlTwinSelectPj = new HorizontalLayout(); hlTwinSelectPj.setImmediate(true); hlTwinSelectPj.setSpacing(true); hlTwinSelectPj.setWidth(100, Unit.PERCENTAGE); @@ -206,14 +208,15 @@ public CtrCandPieceComplementaireWindow(final List formations, final hlTwinSelectPj.setExpandRatio(communSelectPj, 1); /* Listes des Formulaires */ - List listeRightFormulaire = new ArrayList<>(); - List listeLeftFormulaire = new ArrayList<>(); + final List listeRightFormulaire = new ArrayList<>(); + final List listeLeftFormulaire = new ArrayList<>(); /* Construction des listes */ if (formulaires != null && formulaires.size() != 0) { formulaireController.getFormulairesByCtrCandAndScolCentral(ctrCand.getIdCtrCand()).forEach(e -> { - Optional dp = new ArrayList<>(formulaires).stream() - .filter(formulaire -> formulaire.getCodFormulaire().equals(e.getCodFormulaire())).findFirst(); + final Optional dp = new ArrayList<>(formulaires).stream() + .filter(formulaire -> formulaire.getCodFormulaire().equals(e.getCodFormulaire())) + .findFirst(); if (dp.isPresent()) { listeRightFormulaire.add(e); listFormulaire.add(e); @@ -223,7 +226,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final }); } else { listeLeftFormulaire - .addAll(formulaireController.getFormulairesByCtrCandAndScolCentral(ctrCand.getIdCtrCand())); + .addAll(formulaireController.getFormulairesByCtrCandAndScolCentral(ctrCand.getIdCtrCand())); } /* Containers */ @@ -232,23 +235,27 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* Listtes de gauche et droite de formulaire */ leftSelectFormulaire = new ListSelect(applicationContext.getMessage("formation.piececomp.formulaire.dispo", - null, UI.getCurrent().getLocale())); + null, + UI.getCurrent().getLocale())); rightSelectFormulaire = new ListSelect(applicationContext.getMessage("formation.piececomp.formulaire.select", - null, UI.getCurrent().getLocale())); + null, + UI.getCurrent().getLocale())); communSelectFormulaire = new ListSelect(applicationContext.getMessage("formation.piececomp.formulaire.commun", - null, UI.getCurrent().getLocale())); + null, + UI.getCurrent().getLocale())); initListSelectFormulaire(leftSelectFormulaire, containerLeftFormulaire); initListSelectFormulaire(rightSelectFormulaire, containerRightFormulaire); - initListSelectFormulaire(communSelectFormulaire, new BeanItemContainer<>(Formulaire.class, + initListSelectFormulaire(communSelectFormulaire, + new BeanItemContainer<>(Formulaire.class, formulaireController.getFormulairesCommunCtrCandEnService(ctrCand.getIdCtrCand()))); communSelectFormulaire.setEnabled(false); /* Layout bouton milieu formulaire */ - VerticalLayout layoutBtnFormulaire = new VerticalLayout(); + final VerticalLayout layoutBtnFormulaire = new VerticalLayout(); layoutBtnFormulaire.setHeight(100, Unit.PERCENTAGE); layoutBtnFormulaire.setSpacing(true); - OneClickButton btnGoRightFormulaire = new OneClickButton(FontAwesome.ARROW_CIRCLE_RIGHT); - OneClickButton btnGoLeftFormulaire = new OneClickButton(FontAwesome.ARROW_CIRCLE_LEFT); + final OneClickButton btnGoRightFormulaire = new OneClickButton(FontAwesome.ARROW_CIRCLE_RIGHT); + final OneClickButton btnGoLeftFormulaire = new OneClickButton(FontAwesome.ARROW_CIRCLE_LEFT); layoutBtnFormulaire.addComponent(btnGoRightFormulaire); layoutBtnFormulaire.setComponentAlignment(btnGoRightFormulaire, Alignment.BOTTOM_CENTER); layoutBtnFormulaire.addComponent(btnGoLeftFormulaire); @@ -256,7 +263,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* action du bouton mise à droite formulaire */ btnGoRightFormulaire.addClickListener(e -> { - Set collectionLeft = (Set) leftSelectFormulaire.getValue(); + final Set collectionLeft = (Set) leftSelectFormulaire.getValue(); collectionLeft.forEach(formulaire -> { containerLeftFormulaire.removeItem(formulaire); containerRightFormulaire.addBean(formulaire); @@ -268,7 +275,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final /* action du bouton mise à gauche formulaire */ btnGoLeftFormulaire.addClickListener(e -> { - Set collectionRight = (Set) rightSelectFormulaire.getValue(); + final Set collectionRight = (Set) rightSelectFormulaire.getValue(); collectionRight.forEach(formulaire -> { containerRightFormulaire.removeItem(formulaire); containerLeftFormulaire.addBean(formulaire); @@ -279,7 +286,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final }); /* Layout contenant les formulaire */ - HorizontalLayout hlTwinSelectFormulaire = new HorizontalLayout(); + final HorizontalLayout hlTwinSelectFormulaire = new HorizontalLayout(); hlTwinSelectFormulaire.setImmediate(true); hlTwinSelectFormulaire.setSpacing(true); hlTwinSelectFormulaire.setWidth(100, Unit.PERCENTAGE); @@ -293,7 +300,7 @@ public CtrCandPieceComplementaireWindow(final List formations, final hlTwinSelectFormulaire.setExpandRatio(communSelectFormulaire, 1); /* Sheet */ - TabSheet sheet = new TabSheet(); + final TabSheet sheet = new TabSheet(); sheet.setImmediate(true); sheet.addStyleName(ValoTheme.TABSHEET_PADDED_TABBAR); sheet.setSizeFull(); @@ -302,26 +309,26 @@ public CtrCandPieceComplementaireWindow(final List formations, final layout.setExpandRatio(sheet, 1); /* Layout avec message d'info */ - VerticalLayout vlPj = new VerticalLayout(); + final VerticalLayout vlPj = new VerticalLayout(); vlPj.setSizeFull(); vlPj.setMargin(true); vlPj.setSpacing(true); - VerticalLayout vlForm = new VerticalLayout(); + final VerticalLayout vlForm = new VerticalLayout(); vlForm.setSizeFull(); vlForm.setMargin(true); vlForm.setSpacing(true); /* Affichage du message si plus d'une formation selectionnées */ if (formations.size() > 1) { - Label labelInfoPj = new Label( - applicationContext.getMessage("formation.piececomp.info.pj", null, UI.getCurrent().getLocale())); + final Label labelInfoPj = new Label( + applicationContext.getMessage("formation.piececomp.info.pj", null, UI.getCurrent().getLocale())); labelInfoPj.addStyleName(ValoTheme.LABEL_TINY); labelInfoPj.addStyleName(StyleConstants.LABEL_ITALIC); vlPj.addComponent(labelInfoPj); - Label labelInfoForm = new Label( - applicationContext.getMessage("formation.piececomp.info.form", null, UI.getCurrent().getLocale())); + final Label labelInfoForm = new Label( + applicationContext.getMessage("formation.piececomp.info.form", null, UI.getCurrent().getLocale())); labelInfoForm.addStyleName(ValoTheme.LABEL_TINY); labelInfoForm.addStyleName(StyleConstants.LABEL_ITALIC); vlForm.addComponent(labelInfoForm); @@ -332,29 +339,33 @@ public CtrCandPieceComplementaireWindow(final List formations, final vlForm.addComponent(hlTwinSelectFormulaire); sheet.addTab(vlPj, - applicationContext.getMessage("formation.piececomp.sheet.pj", null, UI.getCurrent().getLocale())); - sheet.addTab(vlForm, applicationContext.getMessage("formation.piececomp.sheet.formulaire", null, + applicationContext.getMessage("formation.piececomp.sheet.pj", null, UI.getCurrent().getLocale())); + sheet.addTab(vlForm, + applicationContext.getMessage("formation.piececomp.sheet.formulaire", + null, UI.getCurrent().getLocale())); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); btnAnnuler = new OneClickButton(applicationContext.getMessage("btnAnnuler", null, UI.getCurrent().getLocale()), - FontAwesome.TIMES); + FontAwesome.TIMES); btnAnnuler.addClickListener(e -> close()); buttonsLayout.addComponent(btnAnnuler); buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); btnEnregistrer = new OneClickButton(applicationContext.getMessage("btnSave", null, UI.getCurrent().getLocale()), - FontAwesome.SAVE); + FontAwesome.SAVE); btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); btnEnregistrer.addClickListener(e -> { - ConfirmWindow confirmWindow = new ConfirmWindow( - applicationContext.getMessage("formation.piececomp.window.confirm", - new Object[] {formations.size()}, UI.getCurrent().getLocale())); + final ConfirmWindow confirmWindow = new ConfirmWindow( + applicationContext.getMessage("formation.piececomp.window.confirm", + new Object[] + { formations.size() }, + UI.getCurrent().getLocale())); confirmWindow.addBtnOuiListener(c -> { /* Enregistre la langue saisie */ formationController.savePiecesComplementaires(formations, listPj, listFormulaire); @@ -372,7 +383,6 @@ public CtrCandPieceComplementaireWindow(final List formations, final /** * Initialise les listes de PJ - * * @param listSelect * @param container */ @@ -387,7 +397,6 @@ private void initListSelectPj(final ListSelect listSelect, final BeanItemContain /** * Initialise les listes de PJ - * * @param listSelect * @param container */ diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilGestionnaireWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilGestionnaireWindow.java index 6a84cf8a..a39f7930 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilGestionnaireWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilGestionnaireWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; @@ -34,6 +33,7 @@ import com.vaadin.ui.OptionGroup; import com.vaadin.ui.Panel; import com.vaadin.ui.TextField; +import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import fr.univlorraine.ecandidat.controllers.CacheController; @@ -50,84 +50,67 @@ /** * Fenêtre de recherche d'individu Ldap * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class DroitProfilGestionnaireWindow extends DroitProfilIndividuWindow { - - /** serialVersionUID **/ - private static final long serialVersionUID = -1102784822092848358L; - @Resource private transient ApplicationContext applicationContext; @Resource private transient CacheController cacheController; - /* Composants */ - private TextField tfLoginApogee; - private RequiredComboBox comboBoxCGE; - private CheckBox cbIsAllCommission; - private OptionGroup selectCommission; - private Panel panelCommissions; + private final TextField tfLoginApogee; + private final RequiredComboBox comboBoxCGE; + private final CheckBox cbIsAllCommission; + private final OptionGroup selectCommission; + private final Panel panelCommissions; //private ListSelect0 selectCommission; - - /*Listener*/ + /* Listener */ private DroitProfilGestionnaireListener droitProfilGestionnaireListener; - - /** Constructeur de la fenêtre de profil pour gestionnaire + /** + * Constructeur de la fenêtre de profil pour gestionnaire * @param gestionnaire */ - public DroitProfilGestionnaireWindow(Gestionnaire gestionnaire) { + public DroitProfilGestionnaireWindow(final Gestionnaire gestionnaire) { this(gestionnaire.getCentreCandidature()); switchToModifMode(gestionnaire); } - - /**Constructeur de la fenêtre de profil pour gestionnaire + + /** + * Constructeur de la fenêtre de profil pour gestionnaire * @param ctrCand */ - public DroitProfilGestionnaireWindow(CentreCandidature ctrCand) { + public DroitProfilGestionnaireWindow(final CentreCandidature ctrCand) { super(NomenclatureUtils.DROIT_PROFIL_CENTRE_CANDIDATURE); setHeight(650, Unit.PIXELS); - - - /*Login Apogee pour les gestionnaires*/ - tfLoginApogee = new TextField(applicationContext.getMessage("droitprofilind.table.individu.loginApoInd", null, Locale.getDefault()),""); + + /* Login Apogee pour les gestionnaires */ + tfLoginApogee = new TextField(applicationContext.getMessage("droitprofilind.table.individu.loginApoInd", null, UI.getCurrent().getLocale()), ""); tfLoginApogee.setNullRepresentation(""); tfLoginApogee.setMaxLength(20); tfLoginApogee.setWidth(100, Unit.PERCENTAGE); addOption(tfLoginApogee); - - /*Lise de CGE pour les gestionnaires*/ - comboBoxCGE = new RequiredComboBox(cacheController.getListeCentreGestion(),SiScolCentreGestion.class); + + /* Lise de CGE pour les gestionnaires */ + comboBoxCGE = new RequiredComboBox<>(cacheController.getListeCentreGestion(), SiScolCentreGestion.class); comboBoxCGE.setNullSelectionAllowed(true); - comboBoxCGE.setCaption(applicationContext.getMessage("window.search.people.cge", null, Locale.getDefault())); + comboBoxCGE.setCaption(applicationContext.getMessage("window.search.people.cge", null, UI.getCurrent().getLocale())); comboBoxCGE.setWidth(100, Unit.PERCENTAGE); addOption(comboBoxCGE); - - /*CheckBox isAllCommission pour les commissions*/ - cbIsAllCommission = new CheckBox(applicationContext.getMessage("droitprofilind.table.individu.isAllComm", null, Locale.getDefault())); + + /* CheckBox isAllCommission pour les commissions */ + cbIsAllCommission = new CheckBox(applicationContext.getMessage("droitprofilind.table.individu.isAllComm", null, UI.getCurrent().getLocale())); cbIsAllCommission.setImmediate(true); - cbIsAllCommission.addValueChangeListener(e->{ - selectCommission.setValue(null); - Boolean modeAllCommission = cbIsAllCommission.getValue(); - if (modeAllCommission){ - panelCommissions.setVisible(false); - setMinExpendRatio(); - }else{ - panelCommissions.setVisible(true); - setMaxExpendRatio(); - } - }); addOption(cbIsAllCommission, Alignment.MIDDLE_LEFT, null); - - /*NativeSelect isAllCommission pour les commissions*/ + + /* NativeSelect isAllCommission pour les commissions */ panelCommissions = new Panel("Commissions"); panelCommissions.setSizeFull(); - VerticalLayout vlCommissions = new VerticalLayout(); + final VerticalLayout vlCommissions = new VerticalLayout(); vlCommissions.setSizeUndefined(); vlCommissions.setMargin(true); selectCommission = new OptionGroup(); @@ -136,67 +119,79 @@ public DroitProfilGestionnaireWindow(CentreCandidature ctrCand) { selectCommission.setWidth(100, Unit.PERCENTAGE); selectCommission.setMultiSelect(true); selectCommission.setItemCaptionPropertyId(ConstanteUtils.GENERIC_LIBELLE); - selectCommission.setContainerDataSource(new BeanItemContainer(Commission.class,ctrCand.getCommissions())); + selectCommission.setContainerDataSource(new BeanItemContainer<>(Commission.class, ctrCand.getCommissions())); vlCommissions.addComponent(selectCommission); panelCommissions.setContent(vlCommissions); cbIsAllCommission.setValue(false); addOption(panelCommissions, Alignment.MIDDLE_RIGHT, 1f); setMaxExpendRatio(); setOptionLayoutWidth(300); + + cbIsAllCommission.addValueChangeListener(e -> { + selectCommission.setValue(null); + final Boolean modeAllCommission = cbIsAllCommission.getValue(); + if (modeAllCommission) { + panelCommissions.setVisible(false); + setMinExpendRatio(); + } else { + panelCommissions.setVisible(true); + setMaxExpendRatio(); + } + }); } /** * Vérifie les données et si c'est ok, fait l'action du listener */ @Override - protected void performAction(){ - if (droitProfilGestionnaireListener != null && checkData()){ - Individu individu = getIndividu(); - DroitProfil droit = getDroitProfil(); - if ((isModificationMode && droit!=null) || (!isModificationMode && individu!=null && droit!=null)){ + protected void performAction() { + if (droitProfilGestionnaireListener != null && checkData()) { + final Individu individu = getIndividu(); + final DroitProfil droit = getDroitProfil(); + if ((isModificationMode && droit != null) || (!isModificationMode && individu != null && droit != null)) { String loginApogee = tfLoginApogee.getValue(); - if (loginApogee!=null && loginApogee.equals("")){ + if (loginApogee != null && loginApogee.equals("")) { loginApogee = null; } - SiScolCentreGestion cge = (SiScolCentreGestion)comboBoxCGE.getValue(); - if (loginApogee!=null && !loginApogee.equals("") && cge!=null){ - Notification.show(applicationContext.getMessage("window.search.people.login.cge", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + final SiScolCentreGestion cge = (SiScolCentreGestion) comboBoxCGE.getValue(); + if (loginApogee != null && !loginApogee.equals("") && cge != null) { + Notification.show(applicationContext.getMessage("window.search.people.login.cge", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; } - - Boolean isAllCommission = cbIsAllCommission.getValue(); + + final Boolean isAllCommission = cbIsAllCommission.getValue(); @SuppressWarnings("unchecked") - Set setCommission = (Set) selectCommission.getValue(); - if (!isAllCommission && setCommission.size()==0){ - Notification.show(applicationContext.getMessage("window.search.people.comm.allorone", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + final Set setCommission = (Set) selectCommission.getValue(); + if (!isAllCommission && setCommission.size() == 0) { + Notification.show(applicationContext.getMessage("window.search.people.comm.allorone", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; } - - droitProfilGestionnaireListener.btnOkClick(individu,droit,loginApogee,cge, isAllCommission, setCommission.stream().collect(Collectors.toList())); + + droitProfilGestionnaireListener.btnOkClick(individu, droit, loginApogee, cge, isAllCommission, setCommission.stream().collect(Collectors.toList())); close(); - } + } } } - - /** Passe en mode modif + + /** + * Passe en mode modif * @param gestionnaire */ - protected void switchToModifMode(Gestionnaire gestionnaire) { + protected void switchToModifMode(final Gestionnaire gestionnaire) { super.switchToModifMode(gestionnaire.getDroitProfilInd()); - if (gestionnaire!=null){ + if (gestionnaire != null) { tfLoginApogee.setValue(gestionnaire.getLoginApoGest()); comboBoxCGE.setValue(gestionnaire.getSiScolCentreGestion()); cbIsAllCommission.setValue(gestionnaire.getTemAllCommGest()); selectCommission.setValue(gestionnaire.getCommissions().stream().collect(Collectors.toSet())); } } - /** * Défini le 'DroitProfilGestionnaireListener' utilisé * @param droitProfilGestionnaireListener */ - public void addDroitProfilGestionnaireListener(DroitProfilGestionnaireListener droitProfilGestionnaireListener) { + public void addDroitProfilGestionnaireListener(final DroitProfilGestionnaireListener droitProfilGestionnaireListener) { this.droitProfilGestionnaireListener = droitProfilGestionnaireListener; } @@ -204,8 +199,9 @@ public void addDroitProfilGestionnaireListener(DroitProfilGestionnaireListener d * Interface pour récupérer un click sur Oui */ public interface DroitProfilGestionnaireListener extends Serializable { - - /** Appelé lorsque Oui est cliqué. + + /** + * Appelé lorsque Oui est cliqué. * @param individu * @param droit * @param loginApo @@ -213,7 +209,7 @@ public interface DroitProfilGestionnaireListener extends Serializable { * @param isAllCommission * @param listCommission */ - public void btnOkClick(Individu individu, DroitProfil droit, String loginApo, SiScolCentreGestion centreGestion, Boolean isAllCommission, List listCommission); + void btnOkClick(Individu individu, DroitProfil droit, String loginApo, SiScolCentreGestion centreGestion, Boolean isAllCommission, List listCommission); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilIndividuWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilIndividuWindow.java index 83986954..13880650 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilIndividuWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilIndividuWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import javax.annotation.Resource; @@ -56,15 +55,14 @@ import fr.univlorraine.ecandidat.vaadin.components.GridFormatting; import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; -/** Fenêtre de recherche d'individu Ldap - * - * @author Kevin Hergalant */ +/** + * Fenêtre de recherche d'individu Ldap + * @author Kevin Hergalant + */ +@SuppressWarnings("serial") @Configurable(preConstruction = true) public class DroitProfilIndividuWindow extends Window { - /** serialVersionUID **/ - private static final long serialVersionUID = -5129251739942956341L; - @Resource private transient ApplicationContext applicationContext; @Resource @@ -76,18 +74,18 @@ public class DroitProfilIndividuWindow extends Window { @Resource private transient DemoController demoController; - public static final String[] PEOPLE_FIELDS_ORDER = {"uid", "supannCivilite", "sn", "givenName", "displayName"}; + public static final String[] PEOPLE_FIELDS_ORDER = { "uid", "supannCivilite", "sn", "givenName", "displayName" }; /* Composants */ protected VerticalLayout infoSuppLayout; - private HorizontalLayout searchLayout; - private TextField searchBox; - private Label loginModification; - private OneClickButton btnSearch; - private GridFormatting grid = new GridFormatting<>(PeopleLdap.class); - private OneClickButton btnValider; - private OneClickButton btnAnnuler; - private ComboBox cbDroitProfil; + private final HorizontalLayout searchLayout; + private final TextField searchBox; + private final Label loginModification; + private final OneClickButton btnSearch; + private final GridFormatting grid = new GridFormatting<>(PeopleLdap.class); + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; + private final ComboBox cbDroitProfil; /* Variable */ protected Boolean isModificationMode = false; @@ -97,7 +95,7 @@ public class DroitProfilIndividuWindow extends Window { /** Constructeur de la fenêtre de profil */ public DroitProfilIndividuWindow(final String type) { - List listeProfilDispo = droitProfilController.getListDroitProfilByType(type); + final List listeProfilDispo = droitProfilController.getListDroitProfilByType(type); /* Style */ setWidth(980, Unit.PIXELS); @@ -106,17 +104,17 @@ public DroitProfilIndividuWindow(final String type) { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setSizeFull(); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("window.search.people.title", null, Locale.getDefault())); + setCaption(applicationContext.getMessage("window.search.people.title", null, UI.getCurrent().getLocale())); /* Commande layout */ - HorizontalLayout commandeLayout = new HorizontalLayout(); + final HorizontalLayout commandeLayout = new HorizontalLayout(); commandeLayout.setWidth(100, Unit.PERCENTAGE); /* Recherche */ @@ -137,7 +135,7 @@ public void handleAction(final Object sender, final Object target) { loginModification.setVisible(false); layout.addComponent(loginModification); - btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, Locale.getDefault())); + btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, UI.getCurrent().getLocale())); btnSearch.addClickListener(e -> performSearch()); searchLayout = new HorizontalLayout(); @@ -146,13 +144,13 @@ public void handleAction(final Object sender, final Object target) { searchLayout.addComponent(btnSearch); /* DroitLayout */ - HorizontalLayout droitLayout = new HorizontalLayout(); + final HorizontalLayout droitLayout = new HorizontalLayout(); droitLayout.setSpacing(true); - Label labelDroit = new Label(applicationContext.getMessage("window.search.profil", null, Locale.getDefault())); + final Label labelDroit = new Label(applicationContext.getMessage("window.search.profil", null, UI.getCurrent().getLocale())); droitLayout.addComponent(labelDroit); droitLayout.setComponentAlignment(labelDroit, Alignment.MIDDLE_RIGHT); - BeanItemContainer container = new BeanItemContainer<>(DroitProfil.class, listeProfilDispo); + final BeanItemContainer container = new BeanItemContainer<>(DroitProfil.class, listeProfilDispo); cbDroitProfil = new ComboBox(); cbDroitProfil.setTextInputAllowed(false); cbDroitProfil.setContainerDataSource(container); @@ -167,7 +165,7 @@ public void handleAction(final Object sender, final Object target) { /* Login Apogee pour les gestionnaires */ infoSuppLayout = new VerticalLayout(); infoSuppLayout.setSpacing(true); - Label labelInfoSuppLayout = new Label(applicationContext.getMessage("window.search.people.option", null, Locale.getDefault()), ContentMode.HTML); + final Label labelInfoSuppLayout = new Label(applicationContext.getMessage("window.search.people.option", null, UI.getCurrent().getLocale()), ContentMode.HTML); labelInfoSuppLayout.addStyleName(ValoTheme.LABEL_H4); labelInfoSuppLayout.addStyleName(ValoTheme.LABEL_COLORED); infoSuppLayout.addComponent(labelInfoSuppLayout); @@ -182,19 +180,8 @@ public void handleAction(final Object sender, final Object target) { grid.initColumn(PEOPLE_FIELDS_ORDER, "window.search.people.", "uid"); grid.setColumnWidth("uid", 125); grid.setColumnWidth("supannCivilite", 88); - grid.addSelectionListener(e -> { - // Le bouton d'enregistrement est actif seulement si un PeopleLdap est sélectionné. - boolean isSelected = grid.getSelectedItem() instanceof PeopleLdap; - btnValider.setEnabled(isSelected); - }); - grid.addItemClickListener(e -> { - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); - HorizontalLayout tableLayout = new HorizontalLayout(); + final HorizontalLayout tableLayout = new HorizontalLayout(); tableLayout.setSpacing(true); tableLayout.setSizeFull(); infoSuppLayout.setSizeUndefined(); @@ -207,7 +194,7 @@ public void handleAction(final Object sender, final Object target) { layout.setExpandRatio(tableLayout, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -226,17 +213,30 @@ public void handleAction(final Object sender, final Object target) { buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si un PeopleLdap est sélectionné. + final boolean isSelected = grid.getSelectedItem() instanceof PeopleLdap; + btnValider.setEnabled(isSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); + /* Centre la fenêtre */ center(); } - /** Passe en mode modif - * + /** + * Passe en mode modif * @param droitProfilInd - * le profil a modifier */ + * le profil a modifier + */ protected void switchToModifMode(final DroitProfilInd droitProfilInd) { isModificationMode = true; - setCaption(applicationContext.getMessage("window.search.people.title.mod", null, Locale.getDefault())); + setCaption(applicationContext.getMessage("window.search.people.title.mod", null, UI.getCurrent().getLocale())); setWidth(350, Unit.PIXELS); searchLayout.setVisible(false); loginModification.setVisible(true); @@ -249,18 +249,20 @@ protected void switchToModifMode(final DroitProfilInd droitProfilInd) { infoSuppLayout.setWidth(100, Unit.PERCENTAGE); } - /** ajoute une option au layout d'options - * + /** + * ajoute une option au layout d'options * @param c - * le composant */ + * le composant + */ protected void addOption(final Component c) { addOption(c, Alignment.MIDDLE_LEFT, null); } - /** ajoute une option alignée au layout d'options - * + /** + * ajoute une option alignée au layout d'options * @param c - * le composant */ + * le composant + */ protected void addOption(final Component c, final Alignment align, final Float expendRatio) { infoSuppLayout.addComponent(c); infoSuppLayout.setComponentAlignment(c, align); @@ -288,7 +290,7 @@ public void setOptionLayoutWidth(final int width) { /** Effectue la recherche */ private void performSearch() { if (searchBox.getValue().equals(null) || searchBox.getValue().equals("") || searchBox.getValue().length() < ConstanteUtils.NB_MIN_CAR_PERS) { - Notification.show(applicationContext.getMessage("window.search.morethan", new Object[] {ConstanteUtils.NB_MIN_CAR_PERS}, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.morethan", new Object[] { ConstanteUtils.NB_MIN_CAR_PERS }, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); } else { grid.removeAll(); if (demoController.getDemoMode()) { @@ -302,8 +304,8 @@ private void performSearch() { /** Vérifie les données et si c'est ok, fait l'action du listener */ protected void performAction() { if (droitProfilIndividuListener != null && checkData()) { - Individu individu = getIndividu(); - DroitProfil droit = getDroitProfil(); + final Individu individu = getIndividu(); + final DroitProfil droit = getDroitProfil(); if (individu != null && droit != null) { droitProfilIndividuListener.btnOkClick(individu, droit); close(); @@ -313,32 +315,33 @@ protected void performAction() { /** @return true si les données sont bonnes */ protected Boolean checkData() { - PeopleLdap valPeople = grid.getSelectedItem(); - DroitProfil valDroit = (DroitProfil) cbDroitProfil.getValue(); + final PeopleLdap valPeople = grid.getSelectedItem(); + final DroitProfil valDroit = (DroitProfil) cbDroitProfil.getValue(); if (!isModificationMode && valPeople == null) { - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return false; } else if (valDroit == null) { - Notification.show(applicationContext.getMessage("window.search.noright", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.noright", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return false; } else { return true; } } - /** Renvoi l'individu construit a partir du people Ldap - * - * @return l'individu */ + /** + * Renvoi l'individu construit a partir du people Ldap + * @return l'individu + */ protected Individu getIndividu() { if (isModificationMode) { return null; } else { - PeopleLdap people = grid.getSelectedItem(); - Individu individu = new Individu(people); + final PeopleLdap people = grid.getSelectedItem(); + final Individu individu = new Individu(people); try { individuController.validateIndividuBean(individu); return individu; - } catch (CustomException e) { + } catch (final CustomException e) { Notification.show(e.getMessage(), Notification.Type.WARNING_MESSAGE); return null; } @@ -346,12 +349,12 @@ protected Individu getIndividu() { } protected DroitProfil getDroitProfil() { - DroitProfil droit = (DroitProfil) cbDroitProfil.getValue(); + final DroitProfil droit = (DroitProfil) cbDroitProfil.getValue(); return droit; } - /** Défini le 'DroitProfilIndividuListener' utilisé - * + /** + * Défini le 'DroitProfilIndividuListener' utilisé * @param droitProfilIndividuListener */ public void addDroitProfilIndividuListener(final DroitProfilIndividuListener droitProfilIndividuListener) { @@ -361,12 +364,12 @@ public void addDroitProfilIndividuListener(final DroitProfilIndividuListener dro /** Interface pour récupérer un click sur Oui ou Non. */ public interface DroitProfilIndividuListener extends Serializable { - /** Appelé lorsque Oui est cliqué. - * + /** + * Appelé lorsque Oui est cliqué. * @param individu * @param droit */ - public void btnOkClick(Individu individu, DroitProfil droit); + void btnOkClick(Individu individu, DroitProfil droit); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilMembreCommWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilMembreCommWindow.java index 5f1e263c..721d1930 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilMembreCommWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/DroitProfilMembreCommWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -25,6 +24,7 @@ import org.springframework.context.ApplicationContext; import com.vaadin.ui.CheckBox; +import com.vaadin.ui.UI; import fr.univlorraine.ecandidat.entities.ecandidat.CommissionMembre; import fr.univlorraine.ecandidat.entities.ecandidat.DroitProfil; @@ -35,64 +35,58 @@ /** * Fenêtre de recherche d'individu Ldap * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class DroitProfilMembreCommWindow extends DroitProfilIndividuWindow { - - /** serialVersionUID **/ - private static final long serialVersionUID = 927755644223279264L; - @Resource private transient ApplicationContext applicationContext; /* Composants */ - private CheckBox cbIsPresident; + private final CheckBox cbIsPresident; - /*Listener*/ + /* Listener */ private DroitProfilIndCommListener droitProfilIndCommListener; - /** * Constructeur de la fenêtre de profil pour membre de commission */ public DroitProfilMembreCommWindow() { super(NomenclatureUtils.DROIT_PROFIL_COMMISSION); - - /*CheckBox idPresident pour les commissions*/ - cbIsPresident = new CheckBox(applicationContext.getMessage("droitprofilind.table.individu.isPres", null, Locale.getDefault())); + + /* CheckBox idPresident pour les commissions */ + cbIsPresident = new CheckBox(applicationContext.getMessage("droitprofilind.table.individu.isPres", null, UI.getCurrent().getLocale())); cbIsPresident.setValue(false); addOption(cbIsPresident); setMinExpendRatio(); setOptionLayoutWidth(150); } - - public DroitProfilMembreCommWindow(CommissionMembre membre) { + + public DroitProfilMembreCommWindow(final CommissionMembre membre) { this(); - switchToModifMode(membre.getDroitProfilInd(),membre.getTemIsPresident()); + switchToModifMode(membre.getDroitProfilInd(), membre.getTemIsPresident()); } /** * Vérifie les données et si c'est ok, fait l'action du listener */ @Override - protected void performAction(){ - if (droitProfilIndCommListener != null && checkData()){ - Individu individu = getIndividu(); - DroitProfil droit = getDroitProfil(); - if ((isModificationMode && droit!=null) || (!isModificationMode && individu!=null && droit!=null)){ - droitProfilIndCommListener.btnOkClick(individu,droit,cbIsPresident.getValue()); + protected void performAction() { + if (droitProfilIndCommListener != null && checkData()) { + final Individu individu = getIndividu(); + final DroitProfil droit = getDroitProfil(); + if ((isModificationMode && droit != null) || (!isModificationMode && individu != null && droit != null)) { + droitProfilIndCommListener.btnOkClick(individu, droit, cbIsPresident.getValue()); close(); - } + } } } - - - protected void switchToModifMode(DroitProfilInd droitProfilInd, Boolean isPres) { + + protected void switchToModifMode(final DroitProfilInd droitProfilInd, final Boolean isPres) { super.switchToModifMode(droitProfilInd); setHeight(280, Unit.PIXELS); - if (droitProfilInd.getCommissionMembre()!=null){ + if (droitProfilInd.getCommissionMembre() != null) { cbIsPresident.setValue(isPres); } } @@ -101,7 +95,7 @@ protected void switchToModifMode(DroitProfilInd droitProfilInd, Boolean isPres) * Défini le 'DroitProfilIndCommListener' utilisé * @param droitProfilIndCommListener */ - public void addDroitProfilIndCommListener(DroitProfilIndCommListener droitProfilIndCommListener) { + public void addDroitProfilIndCommListener(final DroitProfilIndCommListener droitProfilIndCommListener) { this.droitProfilIndCommListener = droitProfilIndCommListener; } @@ -109,13 +103,14 @@ public void addDroitProfilIndCommListener(DroitProfilIndCommListener droitProfil * Interface pour récupérer un click sur Oui */ public interface DroitProfilIndCommListener extends Serializable { - - /** Appelé lorsque Oui est cliqué. + + /** + * Appelé lorsque Oui est cliqué. * @param individu * @param droit * @param isPresident */ - public void btnOkClick(Individu individu, DroitProfil droit, Boolean isPresident); + void btnOkClick(Individu individu, DroitProfil droit, Boolean isPresident); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolCentreCandidatureWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolCentreCandidatureWindow.java index 2aff4009..a08479d5 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolCentreCandidatureWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolCentreCandidatureWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -57,38 +56,37 @@ /** * Fenêtre d'édition de centreCandidature - * * @author Kevin Hergalant */ -@SuppressWarnings({"serial", "unchecked", "rawtypes"}) +@SuppressWarnings({ "serial", "unchecked", "rawtypes" }) @Configurable(preConstruction = true) public class ScolCentreCandidatureWindow extends Window { public static final String[] FIELDS_ORDER_1 = { - CentreCandidature_.codCtrCand.getName(), - CentreCandidature_.libCtrCand.getName(), - CentreCandidature_.tesCtrCand.getName(), - CentreCandidature_.temParamCtrCand.getName(), - CentreCandidature_.temSendMailCtrCand.getName(), - CentreCandidature_.mailContactCtrCand.getName()}; + CentreCandidature_.codCtrCand.getName(), + CentreCandidature_.libCtrCand.getName(), + CentreCandidature_.tesCtrCand.getName(), + CentreCandidature_.temParamCtrCand.getName(), + CentreCandidature_.temSendMailCtrCand.getName(), + CentreCandidature_.mailContactCtrCand.getName() }; public static final String[] FIELDS_ORDER_2 = { - CentreCandidature_.typeDecisionFav.getName(), - CentreCandidature_.temListCompCtrCand.getName(), - CentreCandidature_.typeDecisionFavListComp.getName(), - CentreCandidature_.nbMaxVoeuxCtrCand.getName(), - CentreCandidature_.temDematCtrCand.getName(), - CentreCandidature_.infoCompCtrCand.getName()}; + CentreCandidature_.typeDecisionFav.getName(), + CentreCandidature_.temListCompCtrCand.getName(), + CentreCandidature_.typeDecisionFavListComp.getName(), + CentreCandidature_.nbMaxVoeuxCtrCand.getName(), + CentreCandidature_.temDematCtrCand.getName(), + CentreCandidature_.infoCompCtrCand.getName() }; public static final String[] FIELDS_ORDER_3 = { - CentreCandidature_.datDebDepotCtrCand.getName(), - CentreCandidature_.datFinDepotCtrCand.getName(), - CentreCandidature_.datAnalyseCtrCand.getName(), - CentreCandidature_.datRetourCtrCand.getName(), - CentreCandidature_.datJuryCtrCand.getName(), - CentreCandidature_.datPubliCtrCand.getName(), - CentreCandidature_.datConfirmCtrCand.getName(), - CentreCandidature_.delaiConfirmCtrCand.getName(), - CentreCandidature_.datConfirmListCompCtrCand.getName(), - CentreCandidature_.delaiConfirmListCompCtrCand.getName()}; + CentreCandidature_.datDebDepotCtrCand.getName(), + CentreCandidature_.datFinDepotCtrCand.getName(), + CentreCandidature_.datAnalyseCtrCand.getName(), + CentreCandidature_.datRetourCtrCand.getName(), + CentreCandidature_.datJuryCtrCand.getName(), + CentreCandidature_.datPubliCtrCand.getName(), + CentreCandidature_.datConfirmCtrCand.getName(), + CentreCandidature_.delaiConfirmCtrCand.getName(), + CentreCandidature_.datConfirmListCompCtrCand.getName(), + CentreCandidature_.delaiConfirmListCompCtrCand.getName() }; @Resource private transient ApplicationContext applicationContext; @@ -112,9 +110,8 @@ public class ScolCentreCandidatureWindow extends Window { /** * Crée une fenêtre d'édition de centreCandidature - * * @param centreCandidature - * la centreCandidature à éditer + * la centreCandidature à éditer */ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, final Boolean isAdmin) { /* Style */ @@ -124,7 +121,7 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setWidth(100, Unit.PERCENTAGE); // layout.setSizeFull(); layout.setMargin(true); @@ -151,21 +148,21 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi layout.addComponent(sheet); /* Layout des param généraux */ - FormLayout layoutParamGen = new FormLayout(); + final FormLayout layoutParamGen = new FormLayout(); layoutParamGen.setSizeFull(); layoutParamGen.setSpacing(true); layoutParamGen.setMargin(true); sheet.addTab(layoutParamGen, applicationContext.getMessage("ctrCand.window.sheet.gen", null, UI.getCurrent().getLocale())); /* Layout des param par défaut */ - FormLayout layoutParamDefault = new FormLayout(); + final FormLayout layoutParamDefault = new FormLayout(); layoutParamDefault.setSizeFull(); layoutParamDefault.setSpacing(true); layoutParamDefault.setMargin(true); sheet.addTab(layoutParamDefault, applicationContext.getMessage("ctrCand.window.sheet.def", null, UI.getCurrent().getLocale())); /* Layout des param par défaut */ - FormLayout layoutParamDateDefault = new FormLayout(); + final FormLayout layoutParamDateDefault = new FormLayout(); layoutParamDateDefault.setSizeFull(); layoutParamDateDefault.setSpacing(true); layoutParamDateDefault.setMargin(true); @@ -173,21 +170,21 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi /* Formulaire */ - for (String fieldName : FIELDS_ORDER_1) { - String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER_1) { + final String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); layoutParamGen.addComponent(field); if (!isAdmin && !fieldName.equals(CentreCandidature_.mailContactCtrCand.getName()) && !fieldName.equals(CentreCandidature_.temSendMailCtrCand.getName())) { field.setEnabled(false); } if (fieldName.equals(CentreCandidature_.mailContactCtrCand.getName())) { - field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, Locale.getDefault()))); + field.addValidator(new EmailValidator(applicationContext.getMessage("validation.error.mail", null, UI.getCurrent().getLocale()))); } } - for (String fieldName : FIELDS_ORDER_2) { - String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); + for (final String fieldName : FIELDS_ORDER_2) { + final String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); Field field; if (fieldName.equals(CentreCandidature_.infoCompCtrCand.getName())) { field = fieldGroup.buildAndBind(caption, fieldName, RequiredTextArea.class); @@ -198,22 +195,22 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi layoutParamDefault.addComponent(field); } - for (String fieldName : FIELDS_ORDER_3) { - String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); - Field field = fieldGroup.buildAndBind(caption, fieldName); + for (final String fieldName : FIELDS_ORDER_3) { + final String caption = applicationContext.getMessage("ctrCand.table." + fieldName, null, UI.getCurrent().getLocale()); + final Field field = fieldGroup.buildAndBind(caption, fieldName); field.setWidth(100, Unit.PERCENTAGE); layoutParamDateDefault.addComponent(field); } /* Les box de type de decision ListComp */ - ComboBoxTypeDecision cbTypeDecisionFav = (ComboBoxTypeDecision) fieldGroup.getField(CentreCandidature_.typeDecisionFav.getName()); - ComboBoxTypeDecision cbTypeDecisionFavListComp = (ComboBoxTypeDecision) fieldGroup.getField(CentreCandidature_.typeDecisionFavListComp.getName()); + final ComboBoxTypeDecision cbTypeDecisionFav = (ComboBoxTypeDecision) fieldGroup.getField(CentreCandidature_.typeDecisionFav.getName()); + final ComboBoxTypeDecision cbTypeDecisionFavListComp = (ComboBoxTypeDecision) fieldGroup.getField(CentreCandidature_.typeDecisionFavListComp.getName()); /* Alimentation des listes */ cbTypeDecisionFav.setTypeDecisions(typeDecisionController.getTypeDecisionsFavorableEnServiceByCtrCand(centreCandidature)); cbTypeDecisionFavListComp.setTypeDecisions(typeDecisionController.getTypeDecisionsFavorableEnServiceByCtrCand(centreCandidature)); - RequiredCheckBox checkBoxListComp = (RequiredCheckBox) fieldGroup.getField(CentreCandidature_.temListCompCtrCand.getName()); + final RequiredCheckBox checkBoxListComp = (RequiredCheckBox) fieldGroup.getField(CentreCandidature_.temListCompCtrCand.getName()); checkBoxListComp.addValueChangeListener(e -> { cbTypeDecisionFavListComp.setBoxNeeded(checkBoxListComp.getValue(), centreCandidature.getTypeDecisionFavListComp()); }); @@ -227,10 +224,10 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi } /* Le delai ou la date de confirmation */ - RequiredDateField datConfirm = (RequiredDateField) fieldGroup.getField(CentreCandidature_.datConfirmCtrCand.getName()); - RequiredIntegerField delaiConfirm = (RequiredIntegerField) fieldGroup.getField(CentreCandidature_.delaiConfirmCtrCand.getName()); - RequiredDateField datLCConfirm = (RequiredDateField) fieldGroup.getField(CentreCandidature_.datConfirmListCompCtrCand.getName()); - RequiredIntegerField delaiLCConfirm = (RequiredIntegerField) fieldGroup.getField(CentreCandidature_.delaiConfirmListCompCtrCand.getName()); + final RequiredDateField datConfirm = (RequiredDateField) fieldGroup.getField(CentreCandidature_.datConfirmCtrCand.getName()); + final RequiredIntegerField delaiConfirm = (RequiredIntegerField) fieldGroup.getField(CentreCandidature_.delaiConfirmCtrCand.getName()); + final RequiredDateField datLCConfirm = (RequiredDateField) fieldGroup.getField(CentreCandidature_.datConfirmListCompCtrCand.getName()); + final RequiredIntegerField delaiLCConfirm = (RequiredIntegerField) fieldGroup.getField(CentreCandidature_.delaiConfirmListCompCtrCand.getName()); datConfirm.addValueChangeListener(e -> disableFieldDelaiOrDateConfirm(datConfirm.getValue(), delaiConfirm)); delaiConfirm.addValueChangeListener(e -> disableFieldDelaiOrDateConfirm(delaiConfirm.getValue(), datConfirm)); @@ -243,7 +240,7 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi disableFieldDelaiOrDateConfirm(delaiLCConfirm.getValue(), datLCConfirm); /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -275,13 +272,13 @@ public ScolCentreCandidatureWindow(final CentreCandidature centreCandidature, fi /* Valide la saisie */ fieldGroup.commit(); - CentreCandidature centreCandidatureSave = centreCandidatureController.saveCentreCandidature(centreCandidature); + final CentreCandidature centreCandidatureSave = centreCandidatureController.saveCentreCandidature(centreCandidature); if (recordCtrCandWindowListener != null) { recordCtrCandWindowListener.btnOkClick(centreCandidatureSave); } /* Ferme la fenêtre */ close(); - } catch (CommitException ce) { + } catch (final CommitException ce) { sheet.getSheetOnError(ce.getInvalidFields()); } }); @@ -303,7 +300,6 @@ private void disableFieldDelaiOrDateConfirm(final Object value, final AbstractFi /** * Défini le 'RecordCtrCandWindowListener' utilisé - * * @param recordCtrCandWindowListener */ public void addRecordCtrCandWindowListener(final RecordCtrCandWindowListener recordCtrCandWindowListener) { @@ -315,7 +311,6 @@ public interface RecordCtrCandWindowListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * * @param saveCentreCandidature */ void btnOkClick(CentreCandidature saveCentreCandidature); diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolGestCandidatMasseWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolGestCandidatMasseWindow.java index aae2a4f1..dbc4a4f3 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolGestCandidatMasseWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/ScolGestCandidatMasseWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import javax.annotation.Resource; @@ -51,21 +50,17 @@ import fr.univlorraine.ecandidat.vaadin.components.TableFormating; import fr.univlorraine.ecandidat.vaadin.form.RequiredComboBox; - -/** +/** * Fenêtre d'ajout de profil gestionnaire de candidat en masse * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class ScolGestCandidatMasseWindow extends Window { - - /** serialVersionUID **/ - private static final long serialVersionUID = 3706445200390903058L; public static final String[] FIELDS_ORDER = { - Gestionnaire_.droitProfilInd.getName()+"."+DroitProfilInd_.individu.getName()+"."+Individu_.loginInd.getName(), - Gestionnaire_.droitProfilInd.getName()+"."+DroitProfilInd_.individu.getName()+"."+Individu_.libelleInd.getName()}; + Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.loginInd.getName(), + Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.libelleInd.getName() }; @Resource private transient ApplicationContext applicationContext; @@ -73,95 +68,95 @@ public class ScolGestCandidatMasseWindow extends Window { private transient DroitProfilController droitProfilController; @Resource private transient CentreCandidatureController centreCandidatureController; - + private DroitProfilMasseListener droitProfilMasseListener; - + /* Composants */ - private ComboBox cbDroitProfil; - private RequiredComboBox cbCtrCand; - private OneClickButton btnSearch; - private OneClickButton btnEnregistrer; - private OneClickButton btnAnnuler; - private OneClickButton btnDelete; - private TableFormating individuTable = new TableFormating(); - private BeanItemContainer containerTable = new BeanItemContainer(Gestionnaire.class); + private final ComboBox cbDroitProfil; + private final RequiredComboBox cbCtrCand; + private final OneClickButton btnSearch; + private final OneClickButton btnEnregistrer; + private final OneClickButton btnAnnuler; + private final OneClickButton btnDelete; + private final TableFormating individuTable = new TableFormating(); + private final BeanItemContainer containerTable = new BeanItemContainer<>(Gestionnaire.class); /** * Crée une fenêtre d'ajout de profil gestionnaire de candidat en masse */ public ScolGestCandidatMasseWindow() { - - List listeProfilDispo = droitProfilController.getListDroitProfilByType(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT); + + final List listeProfilDispo = droitProfilController.getListDroitProfilByType(NomenclatureUtils.DROIT_PROFIL_GESTION_CANDIDAT); /* Style */ setModal(true); - setWidth(850,Unit.PIXELS); + setWidth(850, Unit.PIXELS); setResizable(true); setClosable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); layout.setSpacing(true); setContent(layout); - - /*Panel d'info*/ - CustomPanel panelInfo = new CustomPanel(applicationContext.getMessage("informations", null, UI.getCurrent().getLocale()),applicationContext.getMessage("droitprofilind.gestcand.window.info", null, UI.getCurrent().getLocale()), FontAwesome.INFO_CIRCLE); + + /* Panel d'info */ + final CustomPanel panelInfo = + new CustomPanel(applicationContext.getMessage("informations", null, UI.getCurrent().getLocale()), applicationContext.getMessage("droitprofilind.gestcand.window.info", null, UI.getCurrent().getLocale()), FontAwesome.INFO_CIRCLE); panelInfo.setWidthMax(); panelInfo.addLabelStyleName(ValoTheme.LABEL_TINY); layout.addComponent(panelInfo); - /*Container*/ - BeanItemContainer container = new BeanItemContainer(DroitProfil.class,listeProfilDispo); - + /* Container */ + final BeanItemContainer container = new BeanItemContainer<>(DroitProfil.class, listeProfilDispo); + /* Titre */ - setCaption(applicationContext.getMessage("droitprofilind.gestcand.window.title", null, UI.getCurrent().getLocale())); - - /*Commande layout*/ - HorizontalLayout commandeLayout = new HorizontalLayout(); + setCaption(applicationContext.getMessage("droitprofilind.gestcand.window.title", null, UI.getCurrent().getLocale())); + + /* Commande layout */ + final HorizontalLayout commandeLayout = new HorizontalLayout(); commandeLayout.setWidth(100, Unit.PERCENTAGE); commandeLayout.setSpacing(true); layout.addComponent(commandeLayout); - - HorizontalLayout rechercheLayout = new HorizontalLayout(); - rechercheLayout.setSpacing(true); + + final HorizontalLayout rechercheLayout = new HorizontalLayout(); + rechercheLayout.setSpacing(true); commandeLayout.addComponent(rechercheLayout); commandeLayout.setExpandRatio(rechercheLayout, 1); - Label label = new Label(applicationContext.getMessage("droitprofilind.gestcand.window.btn.ctr", null, UI.getCurrent().getLocale())); + final Label label = new Label(applicationContext.getMessage("droitprofilind.gestcand.window.btn.ctr", null, UI.getCurrent().getLocale())); rechercheLayout.addComponent(label); rechercheLayout.setComponentAlignment(label, Alignment.MIDDLE_CENTER); - - - BeanItemContainer containerCtr = new BeanItemContainer(CentreCandidature.class); + + final BeanItemContainer containerCtr = new BeanItemContainer<>(CentreCandidature.class); containerCtr.addAll(centreCandidatureController.getCentreCandidatures()); - cbCtrCand = new RequiredComboBox(true); + cbCtrCand = new RequiredComboBox<>(true); cbCtrCand.setContainerDataSource(containerCtr); - rechercheLayout.addComponent(cbCtrCand); - btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, Locale.getDefault())); - btnSearch.addClickListener(e->performSearch()); + rechercheLayout.addComponent(cbCtrCand); + btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, UI.getCurrent().getLocale())); + btnSearch.addClickListener(e -> performSearch()); rechercheLayout.addComponent(btnSearch); - - /*Suppression*/ - btnDelete = new OneClickButton(applicationContext.getMessage("droitprofilind.gestcand.window.delete", null, Locale.getDefault())); + + /* Suppression */ + btnDelete = new OneClickButton(applicationContext.getMessage("droitprofilind.gestcand.window.delete", null, UI.getCurrent().getLocale())); btnDelete.setEnabled(false); - btnDelete.addClickListener(e->{ - if (individuTable.getValue() instanceof Gestionnaire){ - Gestionnaire gest = (Gestionnaire) individuTable.getValue(); + btnDelete.addClickListener(e -> { + if (individuTable.getValue() instanceof Gestionnaire) { + final Gestionnaire gest = (Gestionnaire) individuTable.getValue(); individuTable.removeItem(gest); } - + }); - commandeLayout.addComponent(btnDelete); + commandeLayout.addComponent(btnDelete); commandeLayout.setComponentAlignment(btnDelete, Alignment.MIDDLE_RIGHT); - - /* Table des individus */ - containerTable.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName()+"."+DroitProfilInd_.individu.getName()+"."+Individu_.loginInd.getName()); - containerTable.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName()+"."+DroitProfilInd_.individu.getName()+"."+Individu_.libelleInd.getName()); + + /* Table des individus */ + containerTable.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.loginInd.getName()); + containerTable.addNestedContainerProperty(Gestionnaire_.droitProfilInd.getName() + "." + DroitProfilInd_.individu.getName() + "." + Individu_.libelleInd.getName()); individuTable.setContainerDataSource(containerTable); individuTable.setVisibleColumns((Object[]) FIELDS_ORDER); //individuTable.setWidth(new Float("99.99"), Unit.PERCENTAGE); individuTable.setWidth(100, Unit.PERCENTAGE); individuTable.setHeight(300, Unit.PIXELS); - for (String fieldName : FIELDS_ORDER) { + for (final String fieldName : FIELDS_ORDER) { individuTable.setColumnHeader(fieldName, applicationContext.getMessage("droit." + fieldName, null, UI.getCurrent().getLocale())); } individuTable.setSortContainerPropertyId(Individu_.loginInd.getName()); @@ -172,30 +167,30 @@ public ScolGestCandidatMasseWindow() { individuTable.addItemSetChangeListener(e -> individuTable.sanitizeSelection()); individuTable.addValueChangeListener(e -> { /* Les boutons d'édition et de suppression de individu sont actifs seulement si une individu est sélectionnée. */ - boolean individuIsSelected = individuTable.getValue() instanceof Gestionnaire; + final boolean individuIsSelected = individuTable.getValue() instanceof Gestionnaire; btnDelete.setEnabled(individuIsSelected); - }); + }); layout.addComponent(individuTable); - - /*DroitLayout*/ - HorizontalLayout droitLayout = new HorizontalLayout(); + + /* DroitLayout */ + final HorizontalLayout droitLayout = new HorizontalLayout(); droitLayout.setSpacing(true); - Label labelDroit = new Label(applicationContext.getMessage("window.search.profil", null, Locale.getDefault())); + final Label labelDroit = new Label(applicationContext.getMessage("window.search.profil", null, UI.getCurrent().getLocale())); droitLayout.addComponent(labelDroit); droitLayout.setComponentAlignment(labelDroit, Alignment.MIDDLE_RIGHT); layout.addComponent(droitLayout); - + cbDroitProfil = new ComboBox(); cbDroitProfil.setTextInputAllowed(false); cbDroitProfil.setContainerDataSource(container); cbDroitProfil.setNullSelectionAllowed(false); cbDroitProfil.setImmediate(true); cbDroitProfil.setItemCaptionPropertyId(DroitProfil_.codProfil.getName()); - cbDroitProfil.setValue(listeProfilDispo.get(0)); + cbDroitProfil.setValue(listeProfilDispo.get(0)); droitLayout.addComponent(cbDroitProfil); - + /* Ajoute les boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -208,8 +203,8 @@ public ScolGestCandidatMasseWindow() { btnEnregistrer = new OneClickButton(applicationContext.getMessage("droitprofilind.gestcand.window.btn.ok", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); btnEnregistrer.addStyleName(ValoTheme.BUTTON_PRIMARY); btnEnregistrer.addClickListener(e -> { - if (cbDroitProfil.getValue() instanceof DroitProfil && containerTable.getItemIds().size()>0){ - droitProfilMasseListener.btnOkClick(containerTable.getItemIds(), (DroitProfil)cbDroitProfil.getValue()); + if (cbDroitProfil.getValue() instanceof DroitProfil && containerTable.getItemIds().size() > 0) { + droitProfilMasseListener.btnOkClick(containerTable.getItemIds(), (DroitProfil) cbDroitProfil.getValue()); } }); buttonsLayout.addComponent(btnEnregistrer); @@ -219,19 +214,19 @@ public ScolGestCandidatMasseWindow() { center(); } - - private void performSearch() { + private void performSearch() { containerTable.removeAllItems(); - CentreCandidature ctr = (CentreCandidature) cbCtrCand.getValue(); - if (ctr!=null){ + final CentreCandidature ctr = (CentreCandidature) cbCtrCand.getValue(); + if (ctr != null) { containerTable.addAll(ctr.getGestionnaires()); } } - - /** Défini le 'DroitProfilMasseListener' utilisé + + /** + * Défini le 'DroitProfilMasseListener' utilisé * @param droitProfilMasseListener */ - public void addDroitProfilMasseListener(DroitProfilMasseListener droitProfilMasseListener) { + public void addDroitProfilMasseListener(final DroitProfilMasseListener droitProfilMasseListener) { this.droitProfilMasseListener = droitProfilMasseListener; } @@ -239,12 +234,13 @@ public void addDroitProfilMasseListener(DroitProfilMasseListener droitProfilMass * Interface pour récupérer un click sur Oui */ public interface DroitProfilMasseListener extends Serializable { - - /**Appelé lorsque Oui est cliqué. + + /** + * Appelé lorsque Oui est cliqué. * @param listeGestionnaire * @param droit */ - public void btnOkClick(List listeGestionnaire, DroitProfil droit); + void btnOkClick(List listeGestionnaire, DroitProfil droit); } } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchAnneeUnivApoWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchAnneeUnivApoWindow.java index e1b0d3f4..9a859a99 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchAnneeUnivApoWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchAnneeUnivApoWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import javax.annotation.Resource; @@ -45,30 +44,26 @@ /** * Fenêtre de recherche d'annee univ apogee * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class SearchAnneeUnivApoWindow extends Window { - - /** serialVersionUID **/ - private static final long serialVersionUID = -1777247785495796621L; - + @Resource private transient ApplicationContext applicationContext; @Resource private transient CacheController cacheController; - - public static final String[] FIELDS_ORDER = {SiScolAnneeUni_.codAnu.getName(),SiScolAnneeUni_.libAnu.getName(),SiScolAnneeUni_.etaAnuIae.getName()}; + + public static final String[] FIELDS_ORDER = { SiScolAnneeUni_.codAnu.getName(), SiScolAnneeUni_.libAnu.getName(), SiScolAnneeUni_.etaAnuIae.getName() }; /* Composants */ - private TableFormating tableResult; - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final TableFormating tableResult; + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; - /*Listener*/ + /* Listener */ private AnneeUniListener anneeUniListener; - /** * Crée une fenêtre de recherche de anneeUni */ @@ -80,27 +75,27 @@ public SearchAnneeUnivApoWindow() { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setHeight(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("window.search.anneeUni.title", null, Locale.getDefault())); - - /* Table de Resultat de recherche*/ - List listeAnneeUni = cacheController.getListeAnneeUni(); - if (listeAnneeUni.size()==0){ - layout.addComponent(new Label(applicationContext.getMessage("window.search.anneeUni.noannee", null, Locale.getDefault()))); + setCaption(applicationContext.getMessage("window.search.anneeUni.title", null, UI.getCurrent().getLocale())); + + /* Table de Resultat de recherche */ + final List listeAnneeUni = cacheController.getListeAnneeUni(); + if (listeAnneeUni.size() == 0) { + layout.addComponent(new Label(applicationContext.getMessage("window.search.anneeUni.noannee", null, UI.getCurrent().getLocale()))); } - tableResult = new TableFormating(null, new BeanItemContainer(SiScolAnneeUni.class,listeAnneeUni)); - - String[] columnHeadersHarp = new String[FIELDS_ORDER.length]; - for (int fieldIndex = 0; fieldIndex < FIELDS_ORDER.length; fieldIndex++){ - columnHeadersHarp[fieldIndex] = applicationContext.getMessage("window.search.anneeUni."+FIELDS_ORDER[fieldIndex], null, Locale.getDefault()); + tableResult = new TableFormating(null, new BeanItemContainer<>(SiScolAnneeUni.class, listeAnneeUni)); + + final String[] columnHeadersHarp = new String[FIELDS_ORDER.length]; + for (int fieldIndex = 0; fieldIndex < FIELDS_ORDER.length; fieldIndex++) { + columnHeadersHarp[fieldIndex] = applicationContext.getMessage("window.search.anneeUni." + FIELDS_ORDER[fieldIndex], null, UI.getCurrent().getLocale()); } - tableResult.setVisibleColumns((Object[])FIELDS_ORDER); + tableResult.setVisibleColumns((Object[]) FIELDS_ORDER); tableResult.setSortContainerPropertyId(SiScolAnneeUni_.codAnu.getName()); tableResult.setSortAscending(false); tableResult.setColumnHeaders(columnHeadersHarp); @@ -110,17 +105,12 @@ public SearchAnneeUnivApoWindow() { tableResult.setImmediate(true); tableResult.setSizeFull(); tableResult.addItemSetChangeListener(e -> tableResult.sanitizeSelection()); - tableResult.addValueChangeListener(e -> { - /* Le bouton d'enregistrement est actif seulement si un anneeUni est sélectionné. */ - boolean anneeUniIsSelected = tableResult.getValue() instanceof SiScolAnneeUni; - btnValider.setEnabled(anneeUniIsSelected); - }); - + layout.addComponent(tableResult); layout.setExpandRatio(tableResult, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -129,7 +119,7 @@ public SearchAnneeUnivApoWindow() { btnAnnuler.addClickListener(e -> close()); buttonsLayout.addComponent(btnAnnuler); buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); - + btnValider = new OneClickButton(applicationContext.getMessage("btnAdd", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); btnValider.setEnabled(false); btnValider.addStyleName(ValoTheme.BUTTON_PRIMARY); @@ -138,25 +128,30 @@ public SearchAnneeUnivApoWindow() { }); buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); - + + tableResult.addValueChangeListener(e -> { + /* Le bouton d'enregistrement est actif seulement si un anneeUni est sélectionné. */ + final boolean anneeUniIsSelected = tableResult.getValue() instanceof SiScolAnneeUni; + btnValider.setEnabled(anneeUniIsSelected); + }); /* Centre la fenêtre */ center(); } - + /** * Vérifie els donnée et si c'est ok, fait l'action (renvoie le AnneeUni) */ - private void performAction(){ - if (anneeUniListener != null){ - if (tableResult.getValue()==null){ - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + private void performAction() { + if (anneeUniListener != null) { + if (tableResult.getValue() == null) { + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; - }else{ - SiScolAnneeUni anneeUni = (SiScolAnneeUni) tableResult.getValue(); + } else { + final SiScolAnneeUni anneeUni = (SiScolAnneeUni) tableResult.getValue(); anneeUniListener.btnOkClick(anneeUni.getCodAnu()); close(); - } + } } } @@ -164,7 +159,7 @@ private void performAction(){ * Défini le 'AnneeUniListener' utilisé * @param anneeUniListener */ - public void addAnneeUniListener(AnneeUniListener anneeUniListener) { + public void addAnneeUniListener(final AnneeUniListener anneeUniListener) { this.anneeUniListener = anneeUniListener; } @@ -175,9 +170,9 @@ public interface AnneeUniListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * @param anneeUniv l'AnneeUni a renvoyer + * @param anneeUniv l'AnneeUni a renvoyer */ - public void btnOkClick(String anneeUniv); + void btnOkClick(String anneeUniv); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCandidatWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCandidatWindow.java index 2d0a449e..e7e5cc17 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCandidatWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCandidatWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -46,36 +45,37 @@ import fr.univlorraine.ecandidat.vaadin.components.GridFormatting; import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; -/** Fenêtre de recherche de candidat - * - * @author Kevin Hergalant */ +/** + * Fenêtre de recherche de candidat + * @author Kevin Hergalant + */ +@SuppressWarnings("serial") @Configurable(preConstruction = true) public class SearchCandidatWindow extends Window { - /** serialVersionUID **/ - private static final long serialVersionUID = -497298981780250180L; - @Resource private transient ApplicationContext applicationContext; @Resource private transient CandidatController candidatController; public static final String[] PEOPLE_FIELDS_ORDER = { - CompteMinima_.campagne.getName() + "." + Campagne_.codCamp.getName(), - CompteMinima_.numDossierOpiCptMin.getName(), CompteMinima_.nomCptMin.getName(), - CompteMinima_.prenomCptMin.getName(), CompteMinima_.loginCptMin.getName(), - CompteMinima_.supannEtuIdCptMin.getName(), - CompteMinima_.candidat.getName() + "." + Candidat_.nomPatCandidat.getName(), - CompteMinima_.candidat.getName() + "." + Candidat_.prenomCandidat.getName()}; + CompteMinima_.campagne.getName() + "." + Campagne_.codCamp.getName(), + CompteMinima_.numDossierOpiCptMin.getName(), + CompteMinima_.nomCptMin.getName(), + CompteMinima_.prenomCptMin.getName(), + CompteMinima_.loginCptMin.getName(), + CompteMinima_.supannEtuIdCptMin.getName(), + CompteMinima_.candidat.getName() + "." + Candidat_.nomPatCandidat.getName(), + CompteMinima_.candidat.getName() + "." + Candidat_.prenomCandidat.getName() }; /* Composants */ - private TextField searchBox; - private OneClickButton btnSearch; - private CheckBox cbExactSearch; - private CheckBox cbOtherYears; - private GridFormatting grid = new GridFormatting<>(CompteMinima.class); - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final TextField searchBox; + private final OneClickButton btnSearch; + private final CheckBox cbExactSearch; + private final CheckBox cbOtherYears; + private final GridFormatting grid = new GridFormatting<>(CompteMinima.class); + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; /* Listener */ private CompteMinimaListener compteMinimaListener; @@ -90,7 +90,7 @@ public SearchCandidatWindow() { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setHeight(100, Unit.PERCENTAGE); layout.setMargin(true); @@ -98,10 +98,12 @@ public SearchCandidatWindow() { /* Titre */ setCaption(applicationContext.getMessage("window.search.candidat.title", - new Object[] {ConstanteUtils.NB_MAX_RECH_CPT_MIN}, Locale.getDefault())); + new Object[] + { ConstanteUtils.NB_MAX_RECH_CPT_MIN }, + UI.getCurrent().getLocale())); /* Recherche */ - HorizontalLayout searchLayout = new HorizontalLayout(); + final HorizontalLayout searchLayout = new HorizontalLayout(); searchBox = new TextField(); searchBox.addShortcutListener(new ShortcutListener("Shortcut Name", ShortcutAction.KeyCode.ENTER, null) { @@ -115,13 +117,13 @@ public void handleAction(final Object sender, final Object target) { }); searchBox.focus(); - btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, Locale.getDefault())); + btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, UI.getCurrent().getLocale())); btnSearch.addClickListener(e -> performSearch()); - cbExactSearch = new CheckBox(applicationContext.getMessage("window.search.candidat.exact.search", null, Locale.getDefault())); + cbExactSearch = new CheckBox(applicationContext.getMessage("window.search.candidat.exact.search", null, UI.getCurrent().getLocale())); cbExactSearch.setValue(false); - cbOtherYears = new CheckBox(applicationContext.getMessage("window.search.candidat.all.campagne", null, Locale.getDefault())); + cbOtherYears = new CheckBox(applicationContext.getMessage("window.search.candidat.all.campagne", null, UI.getCurrent().getLocale())); cbOtherYears.setValue(false); searchLayout.setSpacing(true); searchLayout.addComponent(searchBox); @@ -136,31 +138,20 @@ public void handleAction(final Object sender, final Object target) { /* Table de Resultat de recherche */ grid.initColumn(PEOPLE_FIELDS_ORDER, "cptMin.", CompteMinima_.nomCptMin.getName()); - grid.addSelectionListener(e -> { - // Le bouton d'enregistrement est actif seulement si un CompteMinima est sélectionnée. - boolean IsSelected = grid.getSelectedItem() instanceof CompteMinima; - btnValider.setEnabled(IsSelected); - }); - grid.addItemClickListener(e -> { - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); - grid.setColumnWidth(CompteMinima_.campagne.getName() + "." + Campagne_.codCamp.getName(), 100); grid.setColumnWidth(CompteMinima_.numDossierOpiCptMin.getName(), 135); grid.setColumnWidth(CompteMinima_.loginCptMin.getName(), 90); grid.setColumnWidth(CompteMinima_.supannEtuIdCptMin.getName(), 110); - grid.setColumnsWidth(145, CompteMinima_.prenomCptMin.getName(), - CompteMinima_.candidat.getName() + "." + Candidat_.nomPatCandidat.getName(), - CompteMinima_.candidat.getName() + "." + Candidat_.prenomCandidat.getName()); + grid.setColumnsWidth(145, + CompteMinima_.prenomCptMin.getName(), + CompteMinima_.candidat.getName() + "." + Candidat_.nomPatCandidat.getName(), + CompteMinima_.candidat.getName() + "." + Candidat_.prenomCandidat.getName()); layout.addComponent(grid); layout.setExpandRatio(grid, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -179,6 +170,18 @@ public void handleAction(final Object sender, final Object target) { buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si un CompteMinima est sélectionnée. + final boolean IsSelected = grid.getSelectedItem() instanceof CompteMinima; + btnValider.setEnabled(IsSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); + /* Centre la fenêtre */ center(); } @@ -186,24 +189,27 @@ public void handleAction(final Object sender, final Object target) { /** Effectue la recherche */ private void performSearch() { if (searchBox.getValue().equals(null) || searchBox.getValue().equals("") - || searchBox.getValue().length() < ConstanteUtils.NB_MIN_CAR_CAND) { + || searchBox.getValue().length() < ConstanteUtils.NB_MIN_CAR_CAND) { Notification.show( - applicationContext.getMessage("window.search.morethan", - new Object[] {ConstanteUtils.NB_MIN_CAR_CAND}, Locale.getDefault()), - Notification.Type.WARNING_MESSAGE); + applicationContext.getMessage("window.search.morethan", + new Object[] + { ConstanteUtils.NB_MIN_CAR_CAND }, + UI.getCurrent().getLocale()), + Notification.Type.WARNING_MESSAGE); } else { - grid.removeAndAddAll(candidatController.getCptMinByFilter(searchBox.getValue(), cbOtherYears.getValue(), - cbExactSearch.getValue())); + grid.removeAndAddAll(candidatController.getCptMinByFilter(searchBox.getValue(), + cbOtherYears.getValue(), + cbExactSearch.getValue())); } } /** Vérifie els donnée et si c'est ok, fait l'action (renvoie le PeopleLdap) */ private void performAction() { if (compteMinimaListener != null) { - CompteMinima cpt = grid.getSelectedItem(); + final CompteMinima cpt = grid.getSelectedItem(); if (cpt == null) { - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), - Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), + Notification.Type.WARNING_MESSAGE); return; } else { compteMinimaListener.btnOkClick(cpt); @@ -212,8 +218,8 @@ private void performAction() { } } - /** Défini le 'compteMinimaListener' utilisé - * + /** + * Défini le 'compteMinimaListener' utilisé * @param compteMinimaListener */ public void addCompteMinimaListener(final CompteMinimaListener compteMinimaListener) { @@ -223,11 +229,12 @@ public void addCompteMinimaListener(final CompteMinimaListener compteMinimaListe /** Interface pour récupérer un click sur Oui ou Non. */ public interface CompteMinimaListener extends Serializable { - /** Appelé lorsque Oui est cliqué. - * + /** + * Appelé lorsque Oui est cliqué. * @param cptMin - * le cptMin a renvoyer */ - public void btnOkClick(CompteMinima cptMin); + * le cptMin a renvoyer + */ + void btnOkClick(CompteMinima cptMin); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCommissionWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCommissionWindow.java index 66071692..3e45622a 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCommissionWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCommissionWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import javax.annotation.Resource; @@ -46,40 +45,37 @@ /** * Fenêtre de recherche de commission * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class SearchCommissionWindow extends Window { - - /** serialVersionUID **/ - private static final long serialVersionUID = 3475563233611742318L; - + @Resource private transient ApplicationContext applicationContext; @Resource private transient CommissionController commissionController; - - public static final String[] FIELDS_ORDER = {Commission_.codComm.getName(),Commission_.libComm.getName(), - Commission_.adresse.getName()+"."+Adresse_.adr1Adr.getName(), - Commission_.adresse.getName()+"."+Adresse_.adr2Adr.getName(), - Commission_.adresse.getName()+"."+Adresse_.adr3Adr.getName(), - Commission_.adresse.getName()+"."+Adresse_.codBdiAdr.getName(), - Commission_.adresse.getName()+"."+Adresse_.siScolCommune.getName()+"."+SiScolCommune_.libCom.getName()}; - - + + public static final String[] FIELDS_ORDER = { Commission_.codComm.getName(), + Commission_.libComm.getName(), + Commission_.adresse.getName() + "." + Adresse_.adr1Adr.getName(), + Commission_.adresse.getName() + "." + Adresse_.adr2Adr.getName(), + Commission_.adresse.getName() + "." + Adresse_.adr3Adr.getName(), + Commission_.adresse.getName() + "." + Adresse_.codBdiAdr.getName(), + Commission_.adresse.getName() + "." + Adresse_.siScolCommune.getName() + "." + SiScolCommune_.libCom.getName() }; + /* Composants */ - private GridFormatting grid = new GridFormatting(Commission.class); - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final GridFormatting grid = new GridFormatting<>(Commission.class); + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; - /*Listener*/ + /* Listener */ private CommissionListener commissionListener; - - /**Crée une fenêtre de recherche de commission + /** + * Crée une fenêtre de recherche de commission * @param ctrCand */ - public SearchCommissionWindow(CentreCandidature ctrCand) { + public SearchCommissionWindow(final CentreCandidature ctrCand) { /* Style */ setWidth(850, Unit.PIXELS); setHeight(480, Unit.PIXELS); @@ -87,42 +83,31 @@ public SearchCommissionWindow(CentreCandidature ctrCand) { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setHeight(100, Unit.PERCENTAGE); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("commission.window.search.title", null, Locale.getDefault())); - - /* Table de Resultat de recherche*/ + setCaption(applicationContext.getMessage("commission.window.search.title", null, UI.getCurrent().getLocale())); + + /* Table de Resultat de recherche */ List listeCommission; - if (ctrCand != null){ + if (ctrCand != null) { listeCommission = commissionController.getCommissionsByCtrCand(ctrCand); - }else{ + } else { listeCommission = commissionController.getCommissionsGestionnaire(); } - + grid.addItems(listeCommission); grid.initColumn(FIELDS_ORDER, "commission.table.", Commission_.codComm.getName()); - grid.addSelectionListener(e->{ - // Le bouton d'enregistrement est actif seulement si une commission est sélectionnée. - boolean isSelected = grid.getSelectedItem() instanceof Commission; - btnValider.setEnabled(isSelected); - }); - grid.addItemClickListener(e->{ - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); - + layout.addComponent(grid); layout.setExpandRatio(grid, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -131,7 +116,7 @@ public SearchCommissionWindow(CentreCandidature ctrCand) { btnAnnuler.addClickListener(e -> close()); buttonsLayout.addComponent(btnAnnuler); buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); - + btnValider = new OneClickButton(applicationContext.getMessage("btnValid", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); btnValider.setEnabled(false); btnValider.addStyleName(ValoTheme.BUTTON_PRIMARY); @@ -140,25 +125,36 @@ public SearchCommissionWindow(CentreCandidature ctrCand) { }); buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); - + + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si une commission est sélectionnée. + final boolean isSelected = grid.getSelectedItem() instanceof Commission; + btnValider.setEnabled(isSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); /* Centre la fenêtre */ center(); } - + /** * Vérifie les donnée et si c'est ok, fait l'action (renvoie le Commission) */ - private void performAction(){ - if (commissionListener != null){ - Commission commission = grid.getSelectedItem(); - if (commission==null){ - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + private void performAction() { + if (commissionListener != null) { + final Commission commission = grid.getSelectedItem(); + if (commission == null) { + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; - }else{ + } else { commissionListener.btnOkClick(commission); close(); - } + } } } @@ -166,7 +162,7 @@ private void performAction(){ * Défini le 'CommissionListener' utilisé * @param commissionListener */ - public void addCommissionListener(CommissionListener commissionListener) { + public void addCommissionListener(final CommissionListener commissionListener) { this.commissionListener = commissionListener; } @@ -177,9 +173,9 @@ public interface CommissionListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * @param commission la Commission a renvoyer + * @param commission la Commission a renvoyer */ - public void btnOkClick(Commission commission); + void btnOkClick(Commission commission); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCtrCandWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCtrCandWindow.java index 826b15f5..9fbc35aa 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCtrCandWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchCtrCandWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -42,30 +41,26 @@ /** * Fenêtre de recherche de centre de candidature * @author Kevin Hergalant - * */ -@Configurable(preConstruction=true) +@SuppressWarnings("serial") +@Configurable(preConstruction = true) public class SearchCtrCandWindow extends Window { - - /** serialVersionUID **/ - private static final long serialVersionUID = 3475563233611742318L; - + @Resource private transient ApplicationContext applicationContext; @Resource private transient CentreCandidatureController centreCandidatureController; - - public static final String[] FIELDS_ORDER = {CentreCandidature_.codCtrCand.getName(),CentreCandidature_.libCtrCand.getName()}; + + public static final String[] FIELDS_ORDER = { CentreCandidature_.codCtrCand.getName(), CentreCandidature_.libCtrCand.getName() }; /* Composants */ - private GridFormatting grid = new GridFormatting(CentreCandidature.class); - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final GridFormatting grid = new GridFormatting<>(CentreCandidature.class); + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; - /*Listener*/ + /* Listener */ private CentreCandidatureListener centreCandidatureListener; - /** * Crée une fenêtre de recherche de centre de candidature */ @@ -77,38 +72,26 @@ public SearchCtrCandWindow() { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setSizeFull(); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("ctrCand.window.search.title", null, Locale.getDefault())); - - /* Table de Resultat de recherche*/ + setCaption(applicationContext.getMessage("ctrCand.window.search.title", null, UI.getCurrent().getLocale())); + + /* Table de Resultat de recherche */ grid.addItems(centreCandidatureController.getListCentreCandidature()); grid.initColumn(FIELDS_ORDER, "ctrCand.table.", CentreCandidature_.codCtrCand.getName()); - grid.addSelectionListener(e->{ - // Le bouton d'enregistrement est actif seulement si un ctrCand est sélectionnée. - boolean isSelected = grid.getSelectedItem() instanceof CentreCandidature; - btnValider.setEnabled(isSelected); - }); - grid.addItemClickListener(e->{ - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); - grid.setColumnWidth(CentreCandidature_.codCtrCand.getName(), 180); grid.setExpendColumn(CentreCandidature_.libCtrCand.getName()); - + layout.addComponent(grid); layout.setExpandRatio(grid, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -117,7 +100,7 @@ public SearchCtrCandWindow() { btnAnnuler.addClickListener(e -> close()); buttonsLayout.addComponent(btnAnnuler); buttonsLayout.setComponentAlignment(btnAnnuler, Alignment.MIDDLE_LEFT); - + btnValider = new OneClickButton(applicationContext.getMessage("btnValid", null, UI.getCurrent().getLocale()), FontAwesome.SAVE); btnValider.setEnabled(false); btnValider.addStyleName(ValoTheme.BUTTON_PRIMARY); @@ -126,25 +109,36 @@ public SearchCtrCandWindow() { }); buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); - + + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si un ctrCand est sélectionnée. + final boolean isSelected = grid.getSelectedItem() instanceof CentreCandidature; + btnValider.setEnabled(isSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); /* Centre la fenêtre */ center(); } - + /** * Vérifie els donnée et si c'est ok, fait l'action (renvoie le CentreCandidature) */ - private void performAction(){ - if (centreCandidatureListener != null){ - CentreCandidature ctrCand = grid.getSelectedItem(); - if (ctrCand == null){ - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + private void performAction() { + if (centreCandidatureListener != null) { + final CentreCandidature ctrCand = grid.getSelectedItem(); + if (ctrCand == null) { + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; - }else{ + } else { centreCandidatureListener.btnOkClick(ctrCand); close(); - } + } } } @@ -152,7 +146,7 @@ private void performAction(){ * Défini le 'CentreCandidatureListener' utilisé * @param centreCandidatureListener */ - public void addCentreCandidatureListener(CentreCandidatureListener centreCandidatureListener) { + public void addCentreCandidatureListener(final CentreCandidatureListener centreCandidatureListener) { this.centreCandidatureListener = centreCandidatureListener; } @@ -163,9 +157,9 @@ public interface CentreCandidatureListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * @param centre le CentreCandidature a renvoyer + * @param centre le CentreCandidature a renvoyer */ - public void btnOkClick(CentreCandidature centre); + void btnOkClick(CentreCandidature centre); } diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchDiplomeApoWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchDiplomeApoWindow.java index 6349efa6..e01bd79e 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchDiplomeApoWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchDiplomeApoWindow.java @@ -18,7 +18,6 @@ import java.io.Serializable; import java.util.List; -import java.util.Locale; import javax.annotation.Resource; @@ -40,7 +39,6 @@ /** * Fenêtre de recherche de formation apogee - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @@ -54,19 +52,18 @@ public class SearchDiplomeApoWindow extends Window { private static final String CHAMPS_COD_VRS_VDI = "id.codVrsVdi"; private static final String CHAMPS_LIB_DIP = "libDip"; - public static final String[] FIELDS_ORDER = {CHAMPS_COD_DIP, CHAMPS_COD_VRS_VDI, CHAMPS_LIB_DIP}; + public static final String[] FIELDS_ORDER = { CHAMPS_COD_DIP, CHAMPS_COD_VRS_VDI, CHAMPS_LIB_DIP }; /* Composants */ - private GridFormatting grid = new GridFormatting<>(Diplome.class); - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final GridFormatting grid = new GridFormatting<>(Diplome.class); + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; /* Listener */ private DiplomeListener diplomeListener; /** * Crée une fenêtre de recherche de formaiton apogée - * * @param liste */ public SearchDiplomeApoWindow(final List liste) { @@ -77,29 +74,18 @@ public SearchDiplomeApoWindow(final List liste) { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setSizeFull(); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("window.search.diplome.title", null, Locale.getDefault())); + setCaption(applicationContext.getMessage("window.search.diplome.title", null, UI.getCurrent().getLocale())); /* Table de Resultat de recherche */ grid.initColumn(FIELDS_ORDER, "diplome.", CHAMPS_COD_DIP); grid.addItems(liste); - grid.addSelectionListener(e -> { - // Le bouton d'enregistrement est actif seulement si un Diplome est sélectionnée. - boolean isSelected = grid.getSelectedItem() instanceof Diplome; - btnValider.setEnabled(isSelected); - }); - grid.addItemClickListener(e -> { - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); grid.setColumnWidth(CHAMPS_COD_DIP, 150); grid.setColumnWidth(CHAMPS_COD_VRS_VDI, 150); // grid.setColumnWidth(CHAMPS_LIB_DIP, 240); @@ -108,7 +94,7 @@ public SearchDiplomeApoWindow(final List liste) { layout.setExpandRatio(grid, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -127,6 +113,18 @@ public SearchDiplomeApoWindow(final List liste) { buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si un Diplome est sélectionnée. + final boolean isSelected = grid.getSelectedItem() instanceof Diplome; + btnValider.setEnabled(isSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); + /* Centre la fenêtre */ center(); } @@ -134,9 +132,9 @@ public SearchDiplomeApoWindow(final List liste) { /** Vérifie els donnée et si c'est ok, fait l'action (renvoie le AnneeUni) */ private void performAction() { if (diplomeListener != null) { - Diplome diplome = grid.getSelectedItem(); + final Diplome diplome = grid.getSelectedItem(); if (diplome == null) { - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; } else { diplomeListener.btnOkClick(diplome); @@ -147,7 +145,6 @@ private void performAction() { /** * Défini le 'DiplomeListener' utilisé - * * @param diplomeListener */ public void addDiplomeListener(final DiplomeListener diplomeListener) { @@ -159,9 +156,8 @@ public interface DiplomeListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * * @param diplome - * le diplome a renvoyer + * le diplome a renvoyer */ void btnOkClick(Diplome diplome); diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchFormationApoWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchFormationApoWindow.java index 3239959e..e6a263ee 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchFormationApoWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/SearchFormationApoWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -48,7 +47,6 @@ /** * Fenêtre de recherche de formation apogee - * * @author Kevin Hergalant */ @SuppressWarnings("serial") @@ -62,21 +60,20 @@ public class SearchFormationApoWindow extends Window { @Resource private transient IndividuController individuController; - public static final String[] FIELDS_ORDER = {"id.codEtpVet", "id.codVrsVet", "libVet", "id.codCge", "libTypDip"}; + public static final String[] FIELDS_ORDER = { "id.codEtpVet", "id.codVrsVet", "libVet", "id.codCge", "libTypDip" }; /* Composants */ - private GridFormatting grid = new GridFormatting<>(Vet.class); - private TextField searchBox; - private OneClickButton btnSearch; - private OneClickButton btnValider; - private OneClickButton btnAnnuler; + private final GridFormatting grid = new GridFormatting<>(Vet.class); + private final TextField searchBox; + private final OneClickButton btnSearch; + private final OneClickButton btnValider; + private final OneClickButton btnAnnuler; /* Listener */ private VetListener vetListener; /** * Crée une fenêtre de recherche de formaiton apogée - * * @param idCtrCand */ public SearchFormationApoWindow(final Integer idCtrCand) { @@ -87,17 +84,17 @@ public SearchFormationApoWindow(final Integer idCtrCand) { setResizable(true); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); setContent(layout); layout.setSizeFull(); layout.setMargin(true); layout.setSpacing(true); /* Titre */ - setCaption(applicationContext.getMessage("window.search.vet.title", null, Locale.getDefault())); + setCaption(applicationContext.getMessage("window.search.vet.title", null, UI.getCurrent().getLocale())); /* Recherche */ - HorizontalLayout searchLayout = new HorizontalLayout(); + final HorizontalLayout searchLayout = new HorizontalLayout(); searchBox = new TextField(); searchBox.addShortcutListener(new ShortcutListener("Shortcut Name", ShortcutAction.KeyCode.ENTER, null) { @@ -108,9 +105,9 @@ public void handleAction(final Object sender, final Object target) { }); searchBox.focus(); - btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, Locale.getDefault())); + btnSearch = new OneClickButton(applicationContext.getMessage("window.search", null, UI.getCurrent().getLocale())); btnSearch.addClickListener(e -> performSearch()); - Label labelLimit = new Label(applicationContext.getMessage("formation.window.apo.limit", new Object[] {ConstanteUtils.NB_MAX_RECH_FORM}, Locale.getDefault())); + final Label labelLimit = new Label(applicationContext.getMessage("formation.window.apo.limit", new Object[] { ConstanteUtils.NB_MAX_RECH_FORM }, UI.getCurrent().getLocale())); searchLayout.setSpacing(true); searchLayout.addComponent(searchBox); @@ -124,17 +121,6 @@ public void handleAction(final Object sender, final Object target) { /* Table de Resultat de recherche */ grid.initColumn(FIELDS_ORDER, "vet.", "id.codEtpVet"); - grid.addSelectionListener(e -> { - // Le bouton d'enregistrement est actif seulement si une vet est sélectionnée. - boolean isSelected = grid.getSelectedItem() instanceof Vet; - btnValider.setEnabled(isSelected); - }); - grid.addItemClickListener(e -> { - if (e.isDoubleClick()) { - grid.select(e.getItemId()); - btnValider.click(); - } - }); grid.setColumnWidth("id.codEtpVet", 120); grid.setColumnWidth("id.codVrsVet", 110); grid.setColumnWidth("libVet", 240); @@ -147,7 +133,7 @@ public void handleAction(final Object sender, final Object target) { layout.setExpandRatio(grid, 1.0f); /* Boutons */ - HorizontalLayout buttonsLayout = new HorizontalLayout(); + final HorizontalLayout buttonsLayout = new HorizontalLayout(); buttonsLayout.setWidth(100, Unit.PERCENTAGE); buttonsLayout.setSpacing(true); layout.addComponent(buttonsLayout); @@ -166,6 +152,18 @@ public void handleAction(final Object sender, final Object target) { buttonsLayout.addComponent(btnValider); buttonsLayout.setComponentAlignment(btnValider, Alignment.MIDDLE_RIGHT); + grid.addSelectionListener(e -> { + // Le bouton d'enregistrement est actif seulement si une vet est sélectionnée. + final boolean isSelected = grid.getSelectedItem() instanceof Vet; + btnValider.setEnabled(isSelected); + }); + grid.addItemClickListener(e -> { + if (e.isDoubleClick()) { + grid.select(e.getItemId()); + btnValider.click(); + } + }); + /* Centre la fenêtre */ center(); } @@ -173,9 +171,9 @@ public void handleAction(final Object sender, final Object target) { /** Vérifie els donnée et si c'est ok, fait l'action (renvoie le AnneeUni) */ private void performAction() { if (vetListener != null) { - Vet vet = grid.getSelectedItem(); + final Vet vet = grid.getSelectedItem(); if (vet == null) { - Notification.show(applicationContext.getMessage("window.search.selectrow", null, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.selectrow", null, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); return; } else { vetListener.btnOkClick(vet); @@ -186,18 +184,17 @@ private void performAction() { /** * Effectue la recherche - * * @param codCgeUserApo * @param codCgeUser */ private void performSearch() { if (searchBox.getValue().equals(null) || searchBox.getValue().equals("") || searchBox.getValue().length() < ConstanteUtils.NB_MIN_CAR_FORM) { - Notification.show(applicationContext.getMessage("window.search.morethan", new Object[] {ConstanteUtils.NB_MIN_CAR_FORM}, Locale.getDefault()), Notification.Type.WARNING_MESSAGE); + Notification.show(applicationContext.getMessage("window.search.morethan", new Object[] { ConstanteUtils.NB_MIN_CAR_FORM }, UI.getCurrent().getLocale()), Notification.Type.WARNING_MESSAGE); } else { grid.removeAll(); try { grid.addItems(formationController.getVetByCGE(searchBox.getValue())); - } catch (SiScolException e) { + } catch (final SiScolException e) { Notification.show(applicationContext.getMessage("siscol.connect.error", null, UI.getCurrent().getLocale()), Type.WARNING_MESSAGE); close(); } @@ -206,7 +203,6 @@ private void performSearch() { /** * Défini le 'VetListener' utilisé - * * @param vetListener */ public void addVetListener(final VetListener vetListener) { @@ -218,9 +214,8 @@ public interface VetListener extends Serializable { /** * Appelé lorsque Oui est cliqué. - * * @param vet - * la vet a renvoyer + * la vet a renvoyer */ void btnOkClick(Vet vet); diff --git a/src/main/java/fr/univlorraine/ecandidat/views/windows/UploadWindow.java b/src/main/java/fr/univlorraine/ecandidat/views/windows/UploadWindow.java index 2a06a3fa..b35c4760 100644 --- a/src/main/java/fr/univlorraine/ecandidat/views/windows/UploadWindow.java +++ b/src/main/java/fr/univlorraine/ecandidat/views/windows/UploadWindow.java @@ -17,7 +17,6 @@ package fr.univlorraine.ecandidat.views.windows; import java.io.Serializable; -import java.util.Locale; import javax.annotation.Resource; @@ -28,6 +27,7 @@ import com.vaadin.ui.Alignment; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; +import com.vaadin.ui.UI; import com.vaadin.ui.Upload; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; @@ -42,12 +42,13 @@ import fr.univlorraine.ecandidat.vaadin.components.OneClickButton; import fr.univlorraine.ecandidat.vaadin.components.Uploader; -/** Fenêtre d'upoload de fichier - * - * @author Kevin Hergalant */ +/** + * Fenêtre d'upoload de fichier + * @author Kevin Hergalant + */ +@SuppressWarnings("serial") @Configurable(preConstruction = true) public class UploadWindow extends Window { - private static final long serialVersionUID = 1L; /* Injections */ @Resource @@ -61,7 +62,7 @@ public class UploadWindow extends Window { /* Composants */ private Upload uploaderComponent = new Upload(); - private Uploader uploader; + private final Uploader uploader; private Boolean error = false; private HorizontalLayout infoLayout = new HorizontalLayout(); private Label infoLabel = new Label(""); @@ -73,8 +74,8 @@ public void addUploadWindowListener(final UploadWindowListener uploadWindowListe this.uploadWindowListener = uploadWindowListener; } - /** Crée une fenêtre d'upoload de fichier - * + /** + * Crée une fenêtre d'upoload de fichier * @param prefixe * @param typeFichier */ @@ -87,25 +88,25 @@ public UploadWindow(final String prefixe, final String typeFichier, final Candid setClosable(false); /* Layout */ - VerticalLayout layout = new VerticalLayout(); + final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); layout.setSpacing(true); setContent(layout); /* Titre */ - setCaption(applicationContext.getMessage("window.upload.title", null, Locale.getDefault())); + setCaption(applicationContext.getMessage("window.upload.title", null, UI.getCurrent().getLocale())); - long UPLOAD_LIMIT = parametreController.getFileMaxSize(); + final long UPLOAD_LIMIT = parametreController.getFileMaxSize(); /* Texte */ - HorizontalLayout hlComponent = new HorizontalLayout(); + final HorizontalLayout hlComponent = new HorizontalLayout(); hlComponent.setSpacing(true); hlComponent.setMargin(true); - Label textLabel = new Label(); + final Label textLabel = new Label(); if (isOnlyImg) { - textLabel.setValue(applicationContext.getMessage("window.upload.message.img", new Object[] {UPLOAD_LIMIT}, Locale.getDefault())); + textLabel.setValue(applicationContext.getMessage("window.upload.message.img", new Object[] { UPLOAD_LIMIT }, UI.getCurrent().getLocale())); } else { - textLabel.setValue(applicationContext.getMessage("window.upload.message", new Object[] {UPLOAD_LIMIT}, Locale.getDefault())); + textLabel.setValue(applicationContext.getMessage("window.upload.message", new Object[] { UPLOAD_LIMIT }, UI.getCurrent().getLocale())); } hlComponent.addComponent(textLabel); hlComponent.setComponentAlignment(textLabel, Alignment.MIDDLE_LEFT); @@ -129,33 +130,33 @@ public UploadWindow(final String prefixe, final String typeFichier, final Candid uploaderComponent.setWidth(100, Unit.PERCENTAGE); uploaderComponent.setImmediate(true); - uploaderComponent.setButtonCaption(applicationContext.getMessage("window.upload.btn", null, Locale.getDefault())); + uploaderComponent.setButtonCaption(applicationContext.getMessage("window.upload.btn", null, UI.getCurrent().getLocale())); /* Ajout du startListener */ uploaderComponent.addStartedListener(e -> { - Integer sizeMax = fileController.getSizeMaxFileName(); - String fileName = e.getFilename(); + final Integer sizeMax = fileController.getSizeMaxFileName(); + final String fileName = e.getFilename(); if (!fileController.isFileNameOk(e.getFilename(), sizeMax)) { - displayError(applicationContext.getMessage("window.upload.toolongfilename", new Object[] {sizeMax}, Locale.getDefault())); + displayError(applicationContext.getMessage("window.upload.toolongfilename", new Object[] { sizeMax }, UI.getCurrent().getLocale())); } // verifie si le fichier est vide else if (e.getContentLength() == 0) { - displayError(applicationContext.getMessage("window.upload.emptyfile", null, Locale.getDefault())); + displayError(applicationContext.getMessage("window.upload.emptyfile", null, UI.getCurrent().getLocale())); } // verifie si le fichier est trop volumineux else if (e.getContentLength() > UPLOAD_LIMIT * ConstanteUtils.UPLOAD_MO1) { - displayError(applicationContext.getMessage("window.upload.toobigfile", null, Locale.getDefault())); + displayError(applicationContext.getMessage("window.upload.toobigfile", null, UI.getCurrent().getLocale())); } /* Verif de l'extension */ else if (!MethodUtils.checkExtension(fileName, isOnlyImg)) { if (isOnlyImg) { - displayError(applicationContext.getMessage("window.upload.mimetype.img", null, Locale.getDefault())); + displayError(applicationContext.getMessage("window.upload.mimetype.img", null, UI.getCurrent().getLocale())); } else { - displayError(applicationContext.getMessage("window.upload.mimetype", null, Locale.getDefault())); + displayError(applicationContext.getMessage("window.upload.mimetype", null, UI.getCurrent().getLocale())); } } else { - infoLabel.setValue(applicationContext.getMessage("window.upload.start", null, Locale.getDefault())); + infoLabel.setValue(applicationContext.getMessage("window.upload.start", null, UI.getCurrent().getLocale())); uploaderComponent.setEnabled(false); infoLayout.setVisible(true); infoLayout.setStyleName(ValoTheme.LABEL_SUCCESS); @@ -165,7 +166,7 @@ else if (!MethodUtils.checkExtension(fileName, isOnlyImg)) { uploaderComponent.addFailedListener(e -> { if (!error) { error = true; - infoLabel.setValue(applicationContext.getMessage("window.upload.error", null, Locale.getDefault())); + infoLabel.setValue(applicationContext.getMessage("window.upload.error", null, UI.getCurrent().getLocale())); infoLayout.setVisible(true); infoLabel.setStyleName(ValoTheme.LABEL_FAILURE); uploader.initFile(); @@ -176,7 +177,7 @@ else if (!MethodUtils.checkExtension(fileName, isOnlyImg)) { if (!error) { if (uploader.getCustomFile() == null) { error = true; - infoLabel.setValue(applicationContext.getMessage("window.upload.error", null, Locale.getDefault())); + infoLabel.setValue(applicationContext.getMessage("window.upload.error", null, UI.getCurrent().getLocale())); infoLayout.setVisible(true); infoLabel.setStyleName(ValoTheme.LABEL_FAILURE); uploader.initFile(); @@ -190,7 +191,7 @@ else if (!MethodUtils.checkExtension(fileName, isOnlyImg)) { layout.addComponent(infoLayout); - OneClickButton btnClose = new OneClickButton(applicationContext.getMessage("btnClose", null, Locale.getDefault()), FontAwesome.TIMES); + final OneClickButton btnClose = new OneClickButton(applicationContext.getMessage("btnClose", null, UI.getCurrent().getLocale()), FontAwesome.TIMES); btnClose.addClickListener(e -> close()); layout.addComponent(btnClose); layout.setComponentAlignment(btnClose, Alignment.MIDDLE_CENTER); @@ -199,8 +200,8 @@ else if (!MethodUtils.checkExtension(fileName, isOnlyImg)) { center(); } - /** Affiche les erreurs - * + /** + * Affiche les erreurs * @param erreur */ private void displayError(final String erreur) { @@ -215,7 +216,7 @@ private void displayError(final String erreur) { public interface UploadWindowListener extends Serializable { /** Appelé lorsque le fichier a bien été téléchargé! */ - public void success(FileCustom file); + void success(FileCustom file); } diff --git a/src/main/resources/assembly/distribution.xml b/src/main/resources/assembly/distribution.xml index a9c2ed13..fc3f631f 100644 --- a/src/main/resources/assembly/distribution.xml +++ b/src/main/resources/assembly/distribution.xml @@ -37,7 +37,6 @@ **/configUrlServices.properties **/configUrlServices.ul.*.properties **/messages.properties - **/styles.scss **/favicon.ico **/logo.png @@ -50,6 +49,7 @@ src/main/webapp/VAADIN/** .project .classpath + .gitignore diff --git a/src/main/resources/db/migration/V2_3_02_00__Url commission.sql b/src/main/resources/db/migration/V2_3_02_00__Url commission.sql new file mode 100644 index 00000000..81642a50 --- /dev/null +++ b/src/main/resources/db/migration/V2_3_02_00__Url commission.sql @@ -0,0 +1,5 @@ +ALTER TABLE `commission` ADD COLUMN `url_comm` VARCHAR(255) NULL COMMENT 'url de la commission' AFTER `mail_comm`; +ALTER TABLE `commission` ADD COLUMN `mail_alert_comm` VARCHAR(80) NULL COMMENT 'mail pour les alertes de la commission' AFTER `id_fichier`; +UPDATE `commission` set `mail_alert_comm` = `mail_comm`; +ALTER TABLE `commission` CHANGE COLUMN `mail_alert_comm` `mail_alert_comm` VARCHAR(80) NOT NULL COMMENT 'mail pour les alertes de la commission' AFTER `id_fichier`; +ALTER TABLE `commission` CHANGE COLUMN `mail_comm` `mail_comm` VARCHAR(80) NULL COMMENT 'mail de contact de la commission' AFTER `lib_comm`; \ No newline at end of file diff --git a/src/main/resources/i18n/backoffice/backoffice-messages.properties b/src/main/resources/i18n/backoffice/backoffice-messages.properties index dc8d62ca..ea15a98c 100644 --- a/src/main/resources/i18n/backoffice/backoffice-messages.properties +++ b/src/main/resources/i18n/backoffice/backoffice-messages.properties @@ -458,6 +458,7 @@ commission.table.faxComm = Fax commission.table.fichier = Image de signature commission.table.i18nCommentRetourComm = Commentaire retour commission.table.libComm = Libell\u00E9 +commission.table.mailAlertComm = Mail d'alertes commission.table.mailComm = Mail commission.table.signataireComm = Signataire commission.table.telComm = T\u00E9l\u00E9phone @@ -469,6 +470,7 @@ commission.table.temAlertTransComm = Alerte transmission dossier commission.table.temEditLettreComm = Lettres dispo. au t\u00E9l\u00E9chargement commission.table.temMailLettreComm = Envoi par mail des lettres commission.table.tesComm = En service +commission.table.urlComm = Url commission.title = Commissions - {0} commission.title.membre = Membres de commission commission.window = Edition de commission @@ -1227,6 +1229,7 @@ validation.i18n.obigatoire = Les traductions sont obligatoires validation.i18n.one.missing = Une traduction est manquante validation.i18n.same.lang = Plusieurs traductions pour la m\u00EAme langue validation.i18n.url.malformed = Url invalide +validation.url.malformed = Url invalide version.action = Action version.app = Version de l'application diff --git a/src/main/resources/i18n/candidat/candidat-messages.properties b/src/main/resources/i18n/candidat/candidat-messages.properties index 430c2a1b..c3947efd 100644 --- a/src/main/resources/i18n/candidat/candidat-messages.properties +++ b/src/main/resources/i18n/candidat/candidat-messages.properties @@ -58,12 +58,13 @@ adresse.window = Edition d'adresse assert.hasText = Cet objet ne peut pas \u00EAtre vide assert.notNull = Cet objet ne peut pas \u00EAtre null -assistanceView.btnContact = Envoyer un mail au r\u00E9f\u00E9rent de l''application: {0} -assistanceView.btnDoc = Consulter la documentation -assistanceView.btnFaq = Consulter la FAQ -assistanceView.btnHelpdesk = Cr\u00E9er un ticket sur le Helpdesk -assistanceView.noDoc =

Aucune documentation disponible

-assistanceView.title = Assistance +assistanceView.btnContact = Envoyer un mail au r\u00E9f\u00E9rent de l''application: {0} +assistanceView.btnContactUrl = Formulaire de contact +assistanceView.btnDoc = Consulter la documentation +assistanceView.btnFaq = Consulter la FAQ +assistanceView.btnHelpdesk = Cr\u00E9er un ticket sur le Helpdesk +assistanceView.noDoc =

Aucune documentation disponible

+assistanceView.title = Assistance btnAdd = Ajouter @@ -133,6 +134,7 @@ candidature.adresse.fax = Fax : {0} candidature.adresse.mail = Mail : {0} candidature.adresse.tel = T\u00E9l. : {0} candidature.adresse.title = Adresse de contact +candidature.adresse.url = Url : {0} candidature.btn.close = Fermer candidature candidature.btn.new = Nouvelle candidature candidature.cancel = Annuler la candidature diff --git a/src/main/resources/i18n/candidat/candidat-messages_en.properties b/src/main/resources/i18n/candidat/candidat-messages_en.properties index 56a5e952..da34ee11 100644 --- a/src/main/resources/i18n/candidat/candidat-messages_en.properties +++ b/src/main/resources/i18n/candidat/candidat-messages_en.properties @@ -58,12 +58,13 @@ adresse.window = Edit address assert.hasText = This item can not be empty assert.notNull = This item can not be null -assistanceView.btnContact = Send a message to the application manager: {0} -assistanceView.btnDoc = Consult the documentation -assistanceView.btnFaq = Consult the FAQ -assistanceView.btnHelpdesk = Create a ticket on the helpdesk -assistanceView.noDoc =

No documentation available

-assistanceView.title = Help +assistanceView.btnContact = Send a message to the application manager: {0} +assistanceView.btnContactUrl = Contact form +assistanceView.btnDoc = Consult the documentation +assistanceView.btnFaq = Consult the FAQ +assistanceView.btnHelpdesk = Create a ticket on the helpdesk +assistanceView.noDoc =

No documentation available

+assistanceView.title = Help btnAdd = Add @@ -133,6 +134,7 @@ candidature.adresse.fax = Fax: {0} candidature.adresse.mail = Email: {0} candidature.adresse.tel = Phone: {0} candidature.adresse.title = Contact address +candidature.adresse.url = Url : {0} candidature.btn.close = Close application candidature.btn.new = New application candidature.cancel = Cancel application diff --git a/src/main/resources/template/exports-xlsx/commissions_template.xlsx b/src/main/resources/template/exports-xlsx/commissions_template.xlsx index 8d2d51fe..be79dc6b 100644 Binary files a/src/main/resources/template/exports-xlsx/commissions_template.xlsx and b/src/main/resources/template/exports-xlsx/commissions_template.xlsx differ diff --git a/src/main/webapp/META-INF/context.sample.xml b/src/main/webapp/META-INF/context.sample.xml index c8117c0c..666985e6 100644 --- a/src/main/webapp/META-INF/context.sample.xml +++ b/src/main/webapp/META-INF/context.sample.xml @@ -82,9 +82,10 @@ - + +