Class CvmLocalImporter

java.lang.Object
com.raphaelsalles.backend.domain.service.importer.CvmLocalImporter
All Implemented Interfaces:
DataImporter

@Service public class CvmLocalImporter extends Object implements DataImporter
Importador de Dados da CVM (Comissão de Valores Mobiliários).

Papel na Arquitetura: Implementação concreta de DataImporter responsável por baixar, descompactar e processar os arquivos ZIP oficiais contendo DFP (Demonstrações Financeiras Padronizadas) e ITR (Informações Trimestrais).

Responsabilidades:
  • Monitorar URLs oficiais da CVM para detectar novos arquivos.
  • Verificar metadados (ETag, Content-Length) para evitar downloads redundantes.
  • Baixar e descompactar arquivos ZIP em memória (sem disco temporário).
  • Filtrar arquivos internos relevantes (DRE, Balanço Patrimonial).
  • Delegar o parsing do CSV para o CvmImportService.
  • Field Details

    • log

      private static final org.slf4j.Logger log
    • importService

      private final CvmImportService importService
    • controlRepository

      private final ImportControlRepository controlRepository
    • systemUserService

      private final SystemUserService systemUserService
    • entityManager

      private jakarta.persistence.EntityManager entityManager
    • httpClient

      private final HttpClient httpClient
  • Constructor Details

  • Method Details

    • getImportName

      public String getImportName()
      Specified by:
      getImportName in interface DataImporter
      Returns:
      Nome identificador do importador (ex: "CVM_LOCAL").
    • processPendingFiles

      public void processPendingFiles()
      Verifica se há atualizações nos arquivos do ano corrente e anterior. Executado diariamente pelo Scheduler.
      Specified by:
      processPendingFiles in interface DataImporter
    • importFullHistory

      public void importFullHistory()
      Força a verificação e download dos últimos 10 anos de histórico. Executado manualmente via AdminController.
      Specified by:
      importFullHistory in interface DataImporter
    • checkAndProcess

      private void checkAndProcess(int year, User bot)
    • processSmart

      private void processSmart(String url, StatementType type, User bot)
    • downloadAndRun

      private void downloadAndRun(String url, StatementType type, User bot) throws IOException, InterruptedException
      Throws:
      IOException
      InterruptedException
    • isRelevantFile

      private boolean isRelevantFile(String name)
    • clearData

      @Transactional public void clearData()
      Limpa todas as tabelas relacionadas a dados financeiros e cadastrais.

      Atenção: Executa TRUNCATE CASCADE. Use com extremo cuidado.

      Specified by:
      clearData in interface DataImporter