Class ArmazenamentoArquivoService

java.lang.Object
br.com.vantroba.bi.transporte.processamento.ArmazenamentoArquivoService

@Singleton public class ArmazenamentoArquivoService extends Object
Coordena o armazenamento do binário XLS entre o Postgres (coluna arquivo_bytes) e o object storage Garage, conforme o ArmazenamentoModo configurado em app.storage.modo.

É o único ponto que conhece os dois backends de uma vez: o ProcessamentoService e o ProcessamentoProcessador dependem só deste coordenador, sem lógica de modo espalhada.

  • Constructor Details

    • ArmazenamentoArquivoService

      public ArmazenamentoArquivoService(br.com.xadm.comum.armazenamento.ArquivoXlsStorage garage, ProcessamentoRepository repository, br.com.xadm.comum.armazenamento.ArmazenamentoConfig cfg)
      Cria o coordenador de armazenamento.
      Parameters:
      garage - seam do object storage Garage
      repository - repositório de processamentos (leitura/escrita de arquivo_bytes)
      cfg - configuração de armazenamento (app.storage.*)
  • Method Details

    • modo

      public br.com.xadm.comum.armazenamento.ArmazenamentoModo modo()
      Returns o modo de armazenamento configurado.
      Returns:
      o modo de armazenamento configurado
    • gravarNoGarage

      public br.com.xadm.comum.armazenamento.ReferenciaObjeto gravarNoGarage(byte[] conteudo, String checksum, LocalDate dataParticao)
      Grava o XLS no Garage quando o modo exige. Content-addressed: um reenvio idêntico sobrescreve o mesmo objeto.
      Parameters:
      conteudo - bytes do arquivo .xlsx
      checksum - checksum SHA-256 do arquivo
      dataParticao - data usada para particionar a chave do objeto
      Returns:
      a referência ao objeto gravado, ou null no modo ArmazenamentoModo.PSQL
    • gravarNoPostgres

      public void gravarNoPostgres(Long id, byte[] conteudo)
      Grava o XLS na coluna arquivo_bytes do Postgres quando o modo exige; no-op caso contrário. Usa o repositório (que gerencia a própria conexão) — a entidade ProcessamentoXls não mapeia essa coluna.
      Parameters:
      id - identificador do processamento (linha já persistida)
      conteudo - bytes do arquivo .xlsx
    • buscar

      public byte[] buscar(ProcessamentoXls proc)
      Lê os bytes do XLS de um processamento. Nos modos PSQL_GARAGE/GARAGE lê do Garage; no PSQL lê de arquivo_bytes. Em qualquer modo recorre ao outro backend se a fonte preferida estiver vazia — cobre registros em transição de modo (ex.: criados em PSQL e processados após troca para GARAGE).
      Parameters:
      proc - processamento cujo binário se quer ler
      Returns:
      bytes do arquivo .xlsx
      Throws:
      IllegalStateException - se o binário não estiver em nenhum dos backends
    • removerDoGarage

      public void removerDoGarage(String bucket, String chave)
      Remove o objeto do Garage. Best-effort: a decisão de engolir a falha fica com o chamador.
      Parameters:
      bucket - bucket do objeto
      chave - chave do objeto