69 lines
2.8 KiB
Java
69 lines
2.8 KiB
Java
package com.lions.dev.service;
|
|
|
|
import com.lions.dev.repository.EventsRepository;
|
|
import jakarta.enterprise.context.ApplicationScoped;
|
|
import jakarta.inject.Inject;
|
|
import java.io.IOException;
|
|
import java.nio.file.FileAlreadyExistsException;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.StandardCopyOption;
|
|
import org.jboss.logging.Logger;
|
|
|
|
/**
|
|
* Service pour la gestion des fichiers uploadés.
|
|
* Ce service permet de sauvegarder et gérer les fichiers uploadés sur le serveur.
|
|
*
|
|
* <p>Toutes les actions sont loguées pour assurer une traçabilité complète.
|
|
*/
|
|
@ApplicationScoped
|
|
public class FileService {
|
|
private static final Logger LOG = Logger.getLogger(FileService.class);
|
|
|
|
@Inject
|
|
EventsRepository eventsRepository;
|
|
|
|
/**
|
|
* Sauvegarde le fichier uploadé sur le serveur, avec création du répertoire de destination
|
|
* si nécessaire et gestion des erreurs de manière contrôlée.
|
|
*
|
|
* @param uploadedFilePath Le chemin temporaire du fichier uploadé.
|
|
* @param destinationDir Le répertoire de destination où sauvegarder le fichier.
|
|
* @param fileName Le nom du fichier.
|
|
* @return Le chemin complet du fichier sauvegardé.
|
|
* @throws IOException Si une erreur survient lors de la sauvegarde.
|
|
*/
|
|
public Path saveFile(Path uploadedFilePath, String destinationDir, String fileName) throws IOException {
|
|
Path destinationPath = Paths.get(destinationDir, fileName);
|
|
LOG.info("[LOG] Tentative de sauvegarde du fichier vers : " + destinationPath);
|
|
|
|
if (Files.notExists(uploadedFilePath)) {
|
|
LOG.error("[ERROR] Le fichier uploadé n'existe pas : " + uploadedFilePath);
|
|
throw new IOException("Le fichier uploadé n'existe pas : " + uploadedFilePath);
|
|
}
|
|
|
|
try {
|
|
Files.createDirectories(Paths.get(destinationDir));
|
|
LOG.info("[LOG] Répertoire de destination créé ou déjà existant : " + destinationDir);
|
|
} catch (IOException e) {
|
|
LOG.error("[ERROR] Impossible de créer le répertoire de destination : " + destinationDir, e);
|
|
throw new IOException("Impossible de créer le répertoire de destination : " + destinationDir, e);
|
|
}
|
|
|
|
try {
|
|
Files.copy(uploadedFilePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
|
|
LOG.info("[LOG] Fichier sauvegardé avec succès à l'emplacement : " + destinationPath);
|
|
} catch (FileAlreadyExistsException e) {
|
|
LOG.warn("[WARNING] Le fichier existe déjà, il sera remplacé : " + destinationPath);
|
|
Files.copy(uploadedFilePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
|
|
} catch (IOException e) {
|
|
LOG.error("[ERROR] Erreur lors de la copie du fichier vers : " + destinationPath, e);
|
|
throw new IOException("Erreur lors de la sauvegarde du fichier : " + destinationPath, e);
|
|
}
|
|
|
|
return destinationPath;
|
|
}
|
|
|
|
}
|