Class FileStorageService

java.lang.Object
it.uniupo.simnova.service.storage.FileStorageService

@Service public class FileStorageService extends Object
Servizio per la gestione della memorizzazione dei file multimediali. Fornisce metodi per salvare, eliminare e leggere file dalla directory di archiviazione. I file vengono sanitizzati per garantire nomi validi e sicuri.
Version:
1.0
Author:
Alessandro Zappatore
  • Constructor Summary

    Constructors
    Constructor
    Description
    Costruttore che inizializza il servizio con il percorso della directory specificato in application.properties.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    deleteFile(String filename)
    Elimina un singolo file dalla directory di archiviazione.
    void
    deleteFiles(List<String> filenames)
    Elimina una lista di file dalla directory di archiviazione.
    boolean
    fileExists(String centerLogoFilename)
    Controlla se un file esiste nella directory di archiviazione.
    Recupera tutti i file presenti nella directory di archiviazione, escludendo il file "center_logo.png".
    Restituisce il percorso assoluto e normalizzato della directory di archiviazione.
    void
    Metodo eseguito dopo l'inizializzazione del bean per creare la directory di archiviazione se non esiste.
    readFile(String centerLogoFilename)
    Legge un file dalla directory di archiviazione e restituisce un InputStream.
    void
    store(InputStream inputStream, String centerLogoFilename)
    Memorizza un file nella directory di archiviazione.
    storeFile(InputStream file, String filename)
    Salva un file nella directory di archiviazione.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • FileStorageService

      public FileStorageService(@Value("${storage.media-dir}") String mediaDir)
      Costruttore che inizializza il servizio con il percorso della directory specificato in application.properties.
      Parameters:
      mediaDir - Il percorso della directory di archiviazione, iniettato da Spring.
  • Method Details

    • init

      @PostConstruct public void init()
      Metodo eseguito dopo l'inizializzazione del bean per creare la directory di archiviazione se non esiste.
    • storeFile

      public String storeFile(InputStream file, String filename)
      Salva un file nella directory di archiviazione. Il nome del file viene sanitizzato e viene aggiunto l'ID dello scenario.
      Parameters:
      file - InputStream del file da salvare.
      filename - Nome originale del file.
      Returns:
      Il nome del file sanitizzato e salvato, o null in caso di input non valido.
      Throws:
      RuntimeException - Se si verifica un errore durante il salvataggio.
    • deleteFiles

      public void deleteFiles(List<String> filenames)
      Elimina una lista di file dalla directory di archiviazione.
      Parameters:
      filenames - Lista dei nomi dei file da eliminare.
    • deleteFile

      public void deleteFile(String filename)
      Elimina un singolo file dalla directory di archiviazione. Verifica prima che il file non sia utilizzato da altri scenari.
      Parameters:
      filename - Nome del file da eliminare.
    • getMediaDirectory

      public Path getMediaDirectory()
      Restituisce il percorso assoluto e normalizzato della directory di archiviazione.
      Returns:
      Oggetto Path che rappresenta la directory di archiviazione.
    • fileExists

      public boolean fileExists(String centerLogoFilename)
      Controlla se un file esiste nella directory di archiviazione.
      Parameters:
      centerLogoFilename - Nome del file da controllare.
      Returns:
      true se il file esiste, false altrimenti.
    • store

      public void store(InputStream inputStream, String centerLogoFilename)
      Memorizza un file nella directory di archiviazione. Il nome del file deve essere fornito come parametro.
      Parameters:
      inputStream - InputStream del file da memorizzare.
      centerLogoFilename - Nome del file da memorizzare.
    • readFile

      public InputStream readFile(String centerLogoFilename) throws IOException
      Legge un file dalla directory di archiviazione e restituisce un InputStream. Il file deve essere presente nella directory di archiviazione.
      Parameters:
      centerLogoFilename - Nome del file da leggere.
      Returns:
      InputStream del file letto.
      Throws:
      IOException - Se si verifica un errore durante la lettura del file, inclusa la non esistenza del file.
    • getAllFiles

      public ArrayList<String> getAllFiles()
      Recupera tutti i file presenti nella directory di archiviazione, escludendo il file "center_logo.png".
      Returns:
      Una lista di nomi di file presenti nella directory di archiviazione.