Class FileServiceImpl

Object
FileServiceImpl
All Implemented Interfaces:
FileService

@Service("vFileService") public class FileServiceImpl extends Object implements FileService
  • Constructor Details

    • FileServiceImpl

      public FileServiceImpl()
  • Method Details

    • setSetupConfig

      @Autowired public void setSetupConfig(UploadFileSystemSetup setupConfig)
    • setArquivoDao

      @Autowired public void setArquivoDao(ArquivoDao arquivoDao)
    • setMiniaturaDao

      @Autowired public void setMiniaturaDao(MiniaturaDao miniaturaDao)
    • setDownloadTemporarioDao

      @Autowired public void setDownloadTemporarioDao(DownloadTemporarioDao downloadTemporarioDao)
    • setConfigService

      @Autowired public void setConfigService(ConfigService configService)
    • getStoreDirectory

      public File getStoreDirectory()
      Description copied from interface: FileService
      Retorna o diretorio raiz do Viturvio
      Specified by:
      getStoreDirectory in interface FileService
      Returns:
    • getTempDirectory

      public File getTempDirectory()
      Description copied from interface: FileService
      Retorna o diretorio que o servico utiliza para gerar arquivos temporarios
      Specified by:
      getTempDirectory in interface FileService
      Returns:
    • openSession

      public Session openSession()
      Description copied from interface: FileService
      Abre uma secao para uma transacao local no sistema de arquivos. As operacoes realizadas dentro da secao so se tornam visiveis no filesystem geral apos FileService.commit(Session); use FileService.rollback(Session) para desfaze-las.
      Specified by:
      openSession in interface FileService
      Returns:
      nova secao transacional de filesystem
    • createTemporaryFile

      @Transactional(propagation=REQUIRED) public File createTemporaryFile()
      Description copied from interface: FileService
      Cria e comita um arquivo temporario
      Specified by:
      createTemporaryFile in interface FileService
      Returns:
    • createTemporaryFile

      @Transactional(propagation=REQUIRED) public File createTemporaryFile(Session session)
      Description copied from interface: FileService
      Cria um arquivo temporario dentro da secao informada
      Specified by:
      createTemporaryFile in interface FileService
      Parameters:
      session -
      Returns:
    • createTemporaryFile

      @Transactional(propagation=REQUIRED) public File createTemporaryFile(String extension)
      Description copied from interface: FileService
      Cria um arquivo temporario com a extensao informada
      Specified by:
      createTemporaryFile in interface FileService
      Parameters:
      extension -
      Returns:
    • createTemporaryFile

      @Transactional(propagation=REQUIRED) public File createTemporaryFile(Session session, String extension)
      Description copied from interface: FileService
      Cria um arquivo temporario dentro da secao informada
      Specified by:
      createTemporaryFile in interface FileService
      Parameters:
      session -
      extension -
      Returns:
    • createTemporaryDirectory

      public File createTemporaryDirectory()
      Description copied from interface: FileService
      Cria um diretorio temporario
      Specified by:
      createTemporaryDirectory in interface FileService
      Returns:
    • createTemporaryDirectory

      public File createTemporaryDirectory(Session session)
      Description copied from interface: FileService
      Cria um arquivo temporario dentro da secao informada
      Specified by:
      createTemporaryDirectory in interface FileService
      Parameters:
      session -
      Returns:
    • createTemporaryFile

      @Transactional(propagation=REQUIRED) public File createTemporaryFile(Session session, String extension, String name)
      Description copied from interface: FileService
      Cria um arquivo temporario dentro da secao informada
      Specified by:
      createTemporaryFile in interface FileService
      Parameters:
      session -
      name -
      Returns:
    • writeTemporaryFile

      public File writeTemporaryFile(InputStream inputStream)
      Description copied from interface: FileService
      Escreve um arquivo temporario de forma transacional, a partir do stream especificado
      Specified by:
      writeTemporaryFile in interface FileService
      Parameters:
      inputStream -
      Returns:
    • writeTemporaryFileAsPdfa

      public File writeTemporaryFileAsPdfa(InputStream pdfInputStream)
      Description copied from interface: FileService
      Escreve um arquivo temporario de forma transacional, a partir do stream especificado, compatível com PDF/A
      Specified by:
      writeTemporaryFileAsPdfa in interface FileService
      Parameters:
      pdfInputStream -
      Returns:
    • copyAsTemporaryFile

      public File copyAsTemporaryFile(File source) throws IOException
      Description copied from interface: FileService
      Copia o arquivo para a area de transferencia
      Specified by:
      copyAsTemporaryFile in interface FileService
      Parameters:
      source -
      Returns:
      Throws:
      IOException
    • createInSessionOutputStream

      public OutputStream createInSessionOutputStream(Session session, File fileInSession)
      Description copied from interface: FileService
      Arquivos ainda sob dominio da secao so podem ser escritos/lidos por streams especiais. Use este metodo para cria-los
      Specified by:
      createInSessionOutputStream in interface FileService
      Parameters:
      fileInSession -
      Returns:
    • createInSessionInputStream

      public InputStream createInSessionInputStream(Session session, File fileInSession)
      Description copied from interface: FileService
      Arquivos ainda sob dominio da secao so podem ser escritos/lidos por streams especiais. Use este metodo para cria-los
      Specified by:
      createInSessionInputStream in interface FileService
      Parameters:
      fileInSession -
      Returns:
    • persistFile

      @Transactional(propagation=REQUIRED) public Arquivo persistFile(Arquivo metadata, File file)
      Description copied from interface: FileService
      Persiste o arquivo temporario dentro da estrutura de armazenamento do Vitruvio, em uma transacao propria que ja e comitada.
      Specified by:
      persistFile in interface FileService
      Parameters:
      metadata - metadados do arquivo (nome, tipo, etc.)
      file - arquivo fisico em area temporaria
      Returns:
      entidade de arquivo persistida
    • persistFile

      @Transactional(propagation=REQUIRED) public Arquivo persistFile(Session session, Arquivo metadata, File file)
      Description copied from interface: FileService
      Persiste o arquivo temporario dentro da estrutura de armazenamento do Vitruvio, utilizando a secao de filesystem informada. A secao nao sera comitada: cabe ao consumidor do metodo comitar as alteracoes em disco via FileService.commit(Session).
      Specified by:
      persistFile in interface FileService
      Parameters:
      session - secao transacional ativa
      metadata - metadados do arquivo (nome, tipo, etc.)
      file - arquivo fisico em area temporaria
      Returns:
      entidade de arquivo persistida (ainda nao comitada)
    • persistMiniature

      @Transactional(propagation=REQUIRED) public void persistMiniature(Arquivo metadata)
      Description copied from interface: FileService
      Persiste miniaturas de imagens conforme configuracao
      Specified by:
      persistMiniature in interface FileService
      Parameters:
      metadata -
    • deleteMiniature

      @Transactional(propagation=REQUIRED) public void deleteMiniature(Arquivo metadata)
      Description copied from interface: FileService
      Deleta miniaturas de imagens geradas
      Specified by:
      deleteMiniature in interface FileService
      Parameters:
      metadata -
    • updateFile

      @Transactional(propagation=REQUIRED) public Arquivo updateFile(Arquivo metadata, File file)
      Description copied from interface: FileService
      Atualiza o arquivo referente aos metadados
      Specified by:
      updateFile in interface FileService
      Parameters:
      metadata -
      file -
      Returns:
    • updateFile

      @Transactional(propagation=REQUIRED) public Arquivo updateFile(Session session, Arquivo metadata, File file)
      Description copied from interface: FileService
      Atualiza o arquivo referente aos metadados
      Specified by:
      updateFile in interface FileService
      Parameters:
      metadata -
      file -
      Returns:
    • createStream

      @Transactional(propagation=SUPPORTS) public InputStream createStream(Integer fileId)
      Description copied from interface: FileService
      Cria um stream de leitura do ID de arquivo informado
      Specified by:
      createStream in interface FileService
      Parameters:
      fileId -
      Returns:
    • createStream

      @Transactional(propagation=SUPPORTS) public InputStream createStream(Arquivo arquivo)
      Description copied from interface: FileService
      Cria um stream de leitura do arquivo informado
      Specified by:
      createStream in interface FileService
      Parameters:
      arquivo -
      Returns:
    • getFile

      public File getFile(Integer fileId)
      Description copied from interface: FileService
      Retorna uma referencia ao arquivo no local de armazenamento designado pela configuracao vigente
      Specified by:
      getFile in interface FileService
      Parameters:
      fileId -
      Returns:
    • getFile

      public File getFile(Arquivo arquivo)
      Description copied from interface: FileService
      Retorna uma referencia ao arquivo no local de armazenamento designado pela configuracao vigente
      Specified by:
      getFile in interface FileService
      Parameters:
      arquivo -
      Returns:
    • getMetadataById

      @Transactional(propagation=SUPPORTS, noRollbackFor=javax.persistence.EntityNotFoundException.class) public Arquivo getMetadataById(Integer id)
      Description copied from interface: FileService
      Get File Metadata
      Specified by:
      getMetadataById in interface FileService
      Parameters:
      id -
      Returns:
    • getFile

      public File getFile(Miniatura miniatura)
      Description copied from interface: FileService
      Retorna uma referencia ao arquivo no local de armazenamento designado pela configuracao vigente
      Specified by:
      getFile in interface FileService
      Returns:
    • getMiniatureFile

      public File getMiniatureFile(Arquivo arquivo, Integer largura, Integer altura)
      Description copied from interface: FileService
      Retorna uma referencia ao arquivo no local de armazenamento
      Specified by:
      getMiniatureFile in interface FileService
      Parameters:
      arquivo -
      largura -
      altura -
      Returns:
    • getMiniatureFile

      public File getMiniatureFile(Integer fileId, Integer largura, Integer altura)
      Description copied from interface: FileService
      Obtem uma referencia para o arquivo da Miniatura de um determinado anexo
      Specified by:
      getMiniatureFile in interface FileService
      Parameters:
      largura -
      altura -
      Returns:
    • getMiniatureFile

      public File getMiniatureFile(Long miniatureId)
      Description copied from interface: FileService
      Obtem uma referencia para o arquivo da miniatura
      Specified by:
      getMiniatureFile in interface FileService
      Parameters:
      miniatureId -
      Returns:
    • createMiniatureStream

      public InputStream createMiniatureStream(Miniatura miniature)
      Description copied from interface: FileService
      Cria um stream de leitura para de uma miniatura
      Specified by:
      createMiniatureStream in interface FileService
      Parameters:
      miniature -
      Returns:
    • createMiniatureStream

      public InputStream createMiniatureStream(Long miniatureId)
      Description copied from interface: FileService
      Cria um stream de leitura para uma miniatura identificada por seu ID
      Specified by:
      createMiniatureStream in interface FileService
      Parameters:
      miniatureId -
      Returns:
    • createMiniatureStream

      public InputStream createMiniatureStream(Arquivo file, Integer largura, Integer altura)
      Description copied from interface: FileService
      Cria um stream de leitura para uma miniatura, de acordo com seu arquivo de origem e suas dimensoes
      Specified by:
      createMiniatureStream in interface FileService
      Parameters:
      file -
      largura -
      altura -
      Returns:
      Stream de leitura ou nulo
    • createMiniatureStream

      public InputStream createMiniatureStream(Integer fileId, Integer largura, Integer altura)
      Description copied from interface: FileService
      Cria um stream de leitura para uma miniatura, de acordo com seu arquivo de origem e suas dimensoes
      Specified by:
      createMiniatureStream in interface FileService
      Parameters:
      largura -
      altura -
      Returns:
      Stream de leitura ou nulo
    • getMiniatures

      public List<Miniatura> getMiniatures(Arquivo arquivo)
      Description copied from interface: FileService
      Obtem uma lista de arquivos miniatura
      Specified by:
      getMiniatures in interface FileService
      Parameters:
      arquivo -
      Returns:
    • deleteFile

      @Transactional(propagation=REQUIRED) public void deleteFile(Integer fileId)
      Description copied from interface: FileService
      Remove o arquivo permanentemente, incluindo seus metadados
      Specified by:
      deleteFile in interface FileService
      Parameters:
      fileId -
    • deleteFile

      @Transactional(propagation=REQUIRED) public void deleteFile(Arquivo arquivo)
      Description copied from interface: FileService
      Remove o arquivo permanentemente, incluindo seus metadados
      Specified by:
      deleteFile in interface FileService
      Parameters:
      arquivo -
    • deleteFile

      @Transactional(propagation=REQUIRED) public void deleteFile(Session session, Arquivo arquivo)
      Description copied from interface: FileService
      Excluir o arquivo utilizando a secao informada
      Specified by:
      deleteFile in interface FileService
      Parameters:
      session -
      arquivo -
    • deleteFile

      @Transactional(propagation=REQUIRED) public void deleteFile(Session session, Integer fileId)
      Description copied from interface: FileService
      Excluir o arquivo utilizando a secao informada
      Specified by:
      deleteFile in interface FileService
      Parameters:
      session -
      fileId -
    • generateSha1SUM

      public String generateSha1SUM(Session session, File file)
      Description copied from interface: FileService
      Gera o hash sha1 de determinado arquivo disponivel apenas dentro determinada secao
      Specified by:
      generateSha1SUM in interface FileService
      Parameters:
      session -
      file -
      Returns:
    • generateSha1SUM

      public String generateSha1SUM(File file)
      Description copied from interface: FileService
      Gera o hash SHA1 de um arquivo ja disponivel no filesystem geral
      Specified by:
      generateSha1SUM in interface FileService
      Parameters:
      file -
      Returns:
    • rollback

      public void rollback(Session s)
      Description copied from interface: FileService
      Efetua rollback da transacao logando possiveis problemas
      Specified by:
      rollback in interface FileService
      Parameters:
      s -
    • commit

      public void commit(Session s)
      Description copied from interface: FileService
      Efetua commit da transacao logando possiveis problemas
      Specified by:
      commit in interface FileService
      Parameters:
      s -
    • getHumanReadableByteSize

      public String getHumanReadableByteSize(Number size)
      Description copied from interface: FileService
      Obtem um tamanho legivel para exibicao ao usuario
      Specified by:
      getHumanReadableByteSize in interface FileService
      Parameters:
      size -
      Returns:
    • getHumanReadableByteSize

      public String getHumanReadableByteSize(Arquivo arquivo)
      Description copied from interface: FileService
      Obtem um tamanho legivel para exibicao ao usuario
      Specified by:
      getHumanReadableByteSize in interface FileService
      Parameters:
      arquivo -
      Returns:
    • buildRandomFileName

      public String buildRandomFileName()
      Description copied from interface: FileService
      Gera um nome de arquivo randomico
      Specified by:
      buildRandomFileName in interface FileService
      Returns:
    • buildRandomFileName

      public String buildRandomFileName(String extension)
      Description copied from interface: FileService
      Gera um nome com caracteres randomicos
      Specified by:
      buildRandomFileName in interface FileService
      Parameters:
      extension -
      Returns:
    • buildRandomFileName

      public String buildRandomFileName(String prefix, String extension)
      Description copied from interface: FileService
      Gera um nome com caracteres randomicos
      Specified by:
      buildRandomFileName in interface FileService
      Parameters:
      prefix -
      extension -
      Returns:
    • generateTemporaryZipFileForIds

      public File generateTemporaryZipFileForIds(Collection<Integer> fileIds)
      Description copied from interface: FileService
      Constroi um arquivo ZIP temporario com os IDs de arquivos informados. Os arquivos sao armazenados com seus nomes originais; havendo conflito de nome com algum arquivo ja adicionado, o ID unico de armazenamento e utilizado para evitar sobreposicao.
      Specified by:
      generateTemporaryZipFileForIds in interface FileService
      Parameters:
      fileIds - ids dos arquivos a incluir no ZIP
      Returns:
      arquivo ZIP temporario gerado
    • generateTemporaryZipForFiles

      public File generateTemporaryZipForFiles(File[] files)
      Description copied from interface: FileService
      Produz um arquivo zippado com os arquivos informados
      Specified by:
      generateTemporaryZipForFiles in interface FileService
      Parameters:
      files -
      Returns:
    • generateTemporaryZipForFiles

      public File generateTemporaryZipForFiles(File[] files, String[] replacementNames)
      Description copied from interface: FileService
      API
      Specified by:
      generateTemporaryZipForFiles in interface FileService
      Parameters:
      files - referencia a arquivos no FS
      replacementNames - Nomes a serem usados no arquivo zip
      Returns:
    • extractZipFile

      public FileService.UnzipResult extractZipFile(Integer fileId) throws IOException
      Description copied from interface: FileService
      Extrai o arquivo persistido para um diretorio temporario
      Specified by:
      extractZipFile in interface FileService
      Parameters:
      fileId -
      Returns:
      Throws:
      IOException
    • extractZipFile

      public FileService.UnzipResult extractZipFile(File file) throws IOException
      Description copied from interface: FileService
      Extrai o arquivo informado para um diretorio temporario
      Specified by:
      extractZipFile in interface FileService
      Parameters:
      file -
      Returns:
      Throws:
      IOException
    • closeResource

      public void closeResource(Closeable resource)
      Description copied from interface: FileService
      Utilitario para encerramento silencioso de referencias
      Specified by:
      closeResource in interface FileService
      Parameters:
      resource -
    • copyFileToDestination

      public void copyFileToDestination(File source, String destination) throws IOException
      Description copied from interface: FileService
      Copia o arquivo de origem para o local de destino Se o local de destino nao existir ou nao for um diretorio, o comando sera abortado
      Specified by:
      copyFileToDestination in interface FileService
      Parameters:
      source -
      Throws:
      IOException
    • copyFileToDestination

      public void copyFileToDestination(File source, String destination, String destinationName) throws IOException
      Description copied from interface: FileService
      Copia o arquivo de origem para o local de destino Se o local de destino nao existir ou nao for um diretorio, o comando sera abortado
      Specified by:
      copyFileToDestination in interface FileService
      Parameters:
      source -
      Throws:
      IOException
    • copyFileToDestination

      public void copyFileToDestination(File source, String destination, String destinationName, boolean overwrite, boolean createPathIfNecessary) throws IOException
      Description copied from interface: FileService
      Copia o arquivo para o local de destino
      Specified by:
      copyFileToDestination in interface FileService
      Parameters:
      source -
      destination -
      overwrite -
      createPathIfNecessary -
      Throws:
      IOException
    • registerFileAsTemporaryDownload

      @Transactional(propagation=REQUIRED) public DownloadTemporario registerFileAsTemporaryDownload(Arquivo arquivo, DownloadTemporario metadata)
      Description copied from interface: FileService
      Registra um arquivo ja persistido como um arquivo de acesso temporario
      Specified by:
      registerFileAsTemporaryDownload in interface FileService
      Parameters:
      arquivo - Entidade persistida
      metadata - Arquivo de metadados. Caso um UUID nao tenha sido atribuido, um sera gerado dinamicamente
      Returns:
      Entidade persistida
    • getTemporaryDownloadByUUID

      @Transactional(propagation=SUPPORTS) public DownloadTemporario getTemporaryDownloadByUUID(String uuid)
      Description copied from interface: FileService
      Obtem uma referencia para a entidade de download temporario ou NULO caso nenhuma seja encontrada com este UUID
      Specified by:
      getTemporaryDownloadByUUID in interface FileService
      Parameters:
      uuid -
      Returns:
    • markDownloadToRemoval

      @Transactional(propagation=REQUIRED) public void markDownloadToRemoval(String uuid)
      Description copied from interface: FileService
      Marca a entidade como elegivel para remocao pelas rotinas de limpeza
      Specified by:
      markDownloadToRemoval in interface FileService
      Parameters:
      uuid -
    • removeTemporaryDownload

      @Transactional(propagation=REQUIRED) public void removeTemporaryDownload(DownloadTemporario entity)
      Description copied from interface: FileService
      Remove o vinculo de acesso temporario do arquivo e tambem o arquivo referenciado fisicamente do filesystem juntamente com sua entrada na tabela de arquivos
      Specified by:
      removeTemporaryDownload in interface FileService
      Parameters:
      entity -
    • removeTemporaryDownload

      @Transactional(propagation=REQUIRED) public void removeTemporaryDownload(DownloadTemporario entity, boolean removeFile)
      Description copied from interface: FileService
      Remove o vinculo de acesso temporario do arquivo e opcionalmente o arquivo da tabela de arquivos e seu arquivo do filesystem
      Specified by:
      removeTemporaryDownload in interface FileService
      Parameters:
      entity -
      removeFile -
    • getDownloadsAllowedToBeRemoved

      @Transactional(propagation=SUPPORTS) public List<DownloadTemporario> getDownloadsAllowedToBeRemoved(int limit)
      Description copied from interface: FileService
      Obtem uma lista de downloads temporarios elegiveis para serem removidos
      Specified by:
      getDownloadsAllowedToBeRemoved in interface FileService
      Parameters:
      limit -
      Returns: