Search in sources :

Example 1 with FileException

use of fr.univlorraine.ecandidat.services.file.FileException in project esup-ecandidat by EsupPortail.

the class CandidaturePieceController method removeFileToPj.

/* @Transactional(rollbackFor=FileException.class) public void
	 * removeFileToPj(PjCand pjCand) throws FileException{ Fichier fichier =
	 * pjCand.getFichier(); pjCandRepository.delete(pjCand); if (fichier != null){
	 * fileController.deleteFichier(fichier,false); } } */
/**
 * Supprime un fichier d'une PJCand
 * @param pjCand
 */
public void removeFileToPj(final PjCand pjCand) {
    final Fichier fichier = pjCand.getFichier();
    final PjCandPK idPjCand = pjCand.getId();
    pjCandRepository.delete(pjCand);
    if (fichier != null) {
        FichierFiabilisation fichierFiabilisation = new FichierFiabilisation(fichier);
        fichierFiabilisation.setIdPj(idPjCand.getIdPj());
        fichierFiabilisation.setIdCand(idPjCand.getIdCand());
        fichierFiabilisation = fichierFiabilisationRepository.save(fichierFiabilisation);
        try {
            fileController.deleteFichier(fichier);
            fichierFiabilisationRepository.delete(fichierFiabilisation);
        } catch (final FileException e) {
        }
    }
}
Also used : FichierFiabilisation(fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation) FileException(fr.univlorraine.ecandidat.services.file.FileException) PjCandPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK) Fichier(fr.univlorraine.ecandidat.entities.ecandidat.Fichier)

Example 2 with FileException

use of fr.univlorraine.ecandidat.services.file.FileException in project esup-ecandidat by EsupPortail.

the class CandidaturePieceController method addFileToPieceJustificative.

/**
 * Ajoute un fichier a une pj
 * @param pieceJustif
 * @param candidature
 * @param listener
 */
public void addFileToPieceJustificative(final PjPresentation pieceJustif, final Candidature candidature, final CandidatureListener listener) {
    /* Verification que le service n'est pas en maintenance */
    if (fileController.isFileServiceMaintenance(true)) {
        return;
    }
    Assert.notNull(candidature, applicationContext.getMessage("assert.notNull", null, UI.getCurrent().getLocale()));
    /* Verrou */
    if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
        return;
    }
    final String user = userController.getCurrentNoDossierCptMinOrLogin();
    final String cod = ConstanteUtils.TYPE_FICHIER_PJ_CAND + "_" + candidature.getCandidat().getCompteMinima().getNumDossierOpiCptMin() + "_" + candidature.getIdCand() + "_" + pieceJustif.getPieceJustif().getIdPj();
    final UploadWindow uw = new UploadWindow(cod, ConstanteUtils.TYPE_FICHIER_CANDIDAT, candidature, pieceJustif.getPJCommune(), false);
    uw.addUploadWindowListener(file -> {
        if (file == null) {
            return;
        }
        /* Verrou */
        if (!lockCandidatController.getLockOrNotifyCandidature(candidature)) {
            return;
        }
        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());
        }
        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 (final FileException e) {
            }
            uw.close();
            return;
        }
        pjCand.setLibFilePjCand(fichier.getNomFichier());
        pjCand.setUserModPjCand(user);
        pjCand.setFichier(fichier);
        final TypeStatutPiece statutTr = tableRefController.getTypeStatutPieceTransmis();
        pjCand.setTypeStatutPiece(statutTr);
        pjCandRepository.save(pjCand);
        // obligé de recharger l'objet car le datetime est arrondi :(
        final PjCand pjCandSave = pjCandRepository.findOne(pk);
        pieceJustif.setFilePj(fichier);
        pieceJustif.setCodStatut(statutTr.getCodTypStatutPiece());
        pieceJustif.setLibStatut(i18nController.getI18nTraduction(statutTr.getI18nLibTypStatutPiece()));
        pieceJustif.setDatModification(pjCandSave.getDatModPjCand());
        candidature.setUserModCand(user);
        candidature.updatePjCand(pjCandSave);
        candidature.setDatModCand(LocalDateTime.now());
        final Candidature candidatureSave = candidatureRepository.save(candidature);
        listener.pjModified(pieceJustif, candidatureSave);
        Notification.show(applicationContext.getMessage("window.upload.success", new Object[] { file.getFileName() }, UI.getCurrent().getLocale()), Type.TRAY_NOTIFICATION);
        uw.close();
    });
    UI.getCurrent().addWindow(uw);
}
Also used : FichierFiabilisation(fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation) UploadWindow(fr.univlorraine.ecandidat.views.windows.UploadWindow) TypeStatutPiece(fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece) FileException(fr.univlorraine.ecandidat.services.file.FileException) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) PjCandPK(fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) FormulaireCandidature(fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature) Fichier(fr.univlorraine.ecandidat.entities.ecandidat.Fichier)

Example 3 with FileException

use of fr.univlorraine.ecandidat.services.file.FileException in project esup-ecandidat by EsupPortail.

the class CandidatureGestionController method launchBatchDestructDossier.

/**
 * Lance le batch de destruction des dossiers
 */
public void launchBatchDestructDossier(final BatchHisto batchHisto) throws FileException {
    final Boolean deleteFileManualy = enableDeleteFileManuallyBatchDestruct != null && enableDeleteFileManuallyBatchDestruct;
    final Boolean deleteRootManualy = enableDeleteRootFolderManuallyBatchDestruct != null && enableDeleteRootFolderManuallyBatchDestruct;
    final List<Campagne> 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 (final Campagne campagne : listeCamp) {
        if (campagneController.getDateDestructionDossier(campagne).isBefore(LocalDateTime.now())) {
            batchController.addDescription(batchHisto, "Batch de destruction, destruction dossiers campagne : " + campagne.getCodCamp() + " - " + campagne.getCompteMinimas().size() + " comptes à supprimer");
            Integer i = 0;
            Integer cpt = 0;
            for (final CompteMinima cptMin : campagne.getCompteMinimas()) {
                if (cptMin.getCandidat() != null) {
                    for (final Candidature candidature : cptMin.getCandidat().getCandidatures()) {
                        for (final PjCand pjCand : candidature.getPjCands()) {
                            if (deleteFileManualy) {
                                candidaturePieceController.removeFileToPjManually(pjCand);
                            } else {
                                candidaturePieceController.removeFileToPj(pjCand);
                            }
                        }
                    }
                }
                compteMinimaRepository.delete(cptMin);
                i++;
                cpt++;
                if (i.equals(ConstanteUtils.BATCH_LOG_NB_LONG)) {
                    batchController.addDescription(batchHisto, "Batch de destruction, destruction de " + cpt + " comptes ok");
                    i = 0;
                }
            }
            /* Lancement du batch de fiabilisation des fichiers */
            fileController.launchFiabilisationFichier(campagne.getDatArchivCamp());
            /* Destruction du dossier de la campagne et les sous-repertoire */
            if (!deleteRootManualy) {
                batchController.addDescription(batchHisto, "Batch de destruction, destruction dossier root campagne : " + campagne.getCodCamp());
                fileController.deleteCampagneFolder(campagne.getCodCamp());
            }
            campagneController.saveDateDestructionCampagne(campagne);
            /* Enregistre la date de suppression */
            batchController.addDescription(batchHisto, "Batch de destruction, fin destruction campagne : " + campagne.getCodCamp() + ", " + cpt + " comptes supprimés");
        }
        batchController.addDescription(batchHisto, "Fin batch de destruction");
    }
}
Also used : TypeDecision_(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecision_) Join(javax.persistence.criteria.Join) Order(org.springframework.data.domain.Sort.Order) SiScolGenericService(fr.univlorraine.ecandidat.services.siscol.SiScolGenericService) LocalDateTime(java.time.LocalDateTime) LoggerFactory(org.slf4j.LoggerFactory) PdfAttachement(fr.univlorraine.ecandidat.utils.PdfAttachement) ArrayList(java.util.ArrayList) Value(org.springframework.beans.factory.annotation.Value) CompteMinimaRepository(fr.univlorraine.ecandidat.repositories.CompteMinimaRepository) Predicate(javax.persistence.criteria.Predicate) NomenclatureUtils(fr.univlorraine.ecandidat.utils.NomenclatureUtils) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) CompteMinima_(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima_) CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) Candidat_(fr.univlorraine.ecandidat.entities.ecandidat.Candidat_) Sort(org.springframework.data.domain.Sort) Direction(org.springframework.data.domain.Sort.Direction) BatchHisto(fr.univlorraine.ecandidat.entities.ecandidat.BatchHisto) FileException(fr.univlorraine.ecandidat.services.file.FileException) Root(javax.persistence.criteria.Root) TypeDecisionCandidatureRepository(fr.univlorraine.ecandidat.repositories.TypeDecisionCandidatureRepository) Campagne(fr.univlorraine.ecandidat.entities.ecandidat.Campagne) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) Logger(org.slf4j.Logger) Candidature_(fr.univlorraine.ecandidat.entities.ecandidat.Candidature_) ConstanteUtils(fr.univlorraine.ecandidat.utils.ConstanteUtils) TypeDecisionCandidature_(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature_) Resource(javax.annotation.Resource) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature) Collectors(java.util.stream.Collectors) ApplicationContext(org.springframework.context.ApplicationContext) List(java.util.List) Component(org.springframework.stereotype.Component) Specification(org.springframework.data.jpa.domain.Specification) LocalDate(java.time.LocalDate) DateTimeFormatter(java.time.format.DateTimeFormatter) CandidatureRepository(fr.univlorraine.ecandidat.repositories.CandidatureRepository) Optional(java.util.Optional) FormationRepository(fr.univlorraine.ecandidat.repositories.FormationRepository) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) Subquery(javax.persistence.criteria.Subquery) Formation(fr.univlorraine.ecandidat.entities.ecandidat.Formation) InputStream(java.io.InputStream) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) CompteMinima(fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima) PjCand(fr.univlorraine.ecandidat.entities.ecandidat.PjCand) TypeDecisionCandidature(fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature) Candidature(fr.univlorraine.ecandidat.entities.ecandidat.Candidature) Campagne(fr.univlorraine.ecandidat.entities.ecandidat.Campagne)

Example 4 with FileException

use of fr.univlorraine.ecandidat.services.file.FileException in project esup-ecandidat by EsupPortail.

the class FileController method scanDocument.

/**
 * Analyse un fichier et renvoie une exception si erreur
 * @param  file
 * @throws FileException
 */
private void scanDocument(final ByteArrayInOutStream file) throws FileException {
    /* Teste si ClamAV est configuré */
    if (clamAVHost == null || clamAVHost.equals("") || clamAVPort == null) {
        return;
    }
    CustomClamAVClient clamAVClientScanner;
    if (clamAVTimeout == null) {
        clamAVClientScanner = new CustomClamAVClient(clamAVHost, clamAVPort);
    } else {
        clamAVClientScanner = new CustomClamAVClient(clamAVHost, clamAVPort, clamAVTimeout);
    }
    /* On scan l'objet-->Exception si erreur avec l'antivirus */
    byte[] reply = null;
    try {
        reply = clamAVClientScanner.scan(file.getByte());
    } catch (final Exception e) {
        reply = null;
        clamAVClientScanner = null;
        logger.error(applicationContext.getMessage("file.error.scan.error", null, UI.getCurrent().getLocale()), e);
        throw new FileException(applicationContext.getMessage("file.error.scan.error", null, UI.getCurrent().getLocale()), e);
    }
    /* On vérifie que le scan a donné un résultat-->Exception si erreur avec l'antivirus */
    if (reply == null) {
        clamAVClientScanner = null;
        throw new FileException(applicationContext.getMessage("file.error.scan.error", null, UI.getCurrent().getLocale()));
    }
    /* On vérifie le test du scan-->NOK=Virus-->Exception */
    if (!ClamAVClient.isCleanReply(reply)) {
        reply = null;
        clamAVClientScanner = null;
        logger.debug("Scan du fichier NOK : VIRUS");
        throw new FileException(applicationContext.getMessage("file.error.scan.virus", null, UI.getCurrent().getLocale()));
    }
    clamAVClientScanner = null;
    reply = null;
}
Also used : CustomClamAVClient(fr.univlorraine.ecandidat.utils.CustomClamAVClient) FileException(fr.univlorraine.ecandidat.services.file.FileException) NoSuchMessageException(org.springframework.context.NoSuchMessageException) FileException(fr.univlorraine.ecandidat.services.file.FileException) SiScolException(fr.univlorraine.ecandidat.services.siscol.SiScolException)

Example 5 with FileException

use of fr.univlorraine.ecandidat.services.file.FileException in project esup-ecandidat by EsupPortail.

the class PieceJustifController method removeFileToPieceJustif.

/**
 * @param pieceJustif
 * @param fichier
 * @throws FileException
 */
private void removeFileToPieceJustif(PieceJustif pieceJustif, final Fichier fichier) {
    pieceJustif.setFichier(null);
    pieceJustif = pieceJustifRepository.save(pieceJustif);
    if (fichier != null) {
        FichierFiabilisation fichierFiabilisation = new FichierFiabilisation(fichier);
        fichierFiabilisation.setIdPj(pieceJustif.getIdPj());
        fichierFiabilisation = fichierFiabilisationRepository.save(fichierFiabilisation);
        try {
            fileController.deleteFichier(fichier);
            fichierFiabilisationRepository.delete(fichierFiabilisation);
        } catch (FileException e) {
        }
    }
}
Also used : FichierFiabilisation(fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation) FileException(fr.univlorraine.ecandidat.services.file.FileException)

Aggregations

FileException (fr.univlorraine.ecandidat.services.file.FileException)10 Fichier (fr.univlorraine.ecandidat.entities.ecandidat.Fichier)6 FichierFiabilisation (fr.univlorraine.ecandidat.entities.ecandidat.FichierFiabilisation)6 Candidature (fr.univlorraine.ecandidat.entities.ecandidat.Candidature)3 PjCand (fr.univlorraine.ecandidat.entities.ecandidat.PjCand)3 PjCandPK (fr.univlorraine.ecandidat.entities.ecandidat.PjCandPK)3 FormulaireCandidature (fr.univlorraine.ecandidat.entities.ecandidat.FormulaireCandidature)2 TypeStatutPiece (fr.univlorraine.ecandidat.entities.ecandidat.TypeStatutPiece)2 SiScolException (fr.univlorraine.ecandidat.services.siscol.SiScolException)2 InputStream (java.io.InputStream)2 BatchHisto (fr.univlorraine.ecandidat.entities.ecandidat.BatchHisto)1 Campagne (fr.univlorraine.ecandidat.entities.ecandidat.Campagne)1 Candidat_ (fr.univlorraine.ecandidat.entities.ecandidat.Candidat_)1 Candidature_ (fr.univlorraine.ecandidat.entities.ecandidat.Candidature_)1 CompteMinima (fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima)1 CompteMinima_ (fr.univlorraine.ecandidat.entities.ecandidat.CompteMinima_)1 Formation (fr.univlorraine.ecandidat.entities.ecandidat.Formation)1 TypeDecisionCandidature (fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature)1 TypeDecisionCandidature_ (fr.univlorraine.ecandidat.entities.ecandidat.TypeDecisionCandidature_)1 TypeDecision_ (fr.univlorraine.ecandidat.entities.ecandidat.TypeDecision_)1