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) {
}
}
}
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);
}
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");
}
}
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;
}
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) {
}
}
}
Aggregations