Class CvmLocalImporter
java.lang.Object
com.raphaelsalles.backend.domain.service.importer.CvmLocalImporter
- All Implemented Interfaces:
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).
- 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.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ImportControlRepositoryprivate jakarta.persistence.EntityManagerprivate final HttpClientprivate final CvmImportServiceprivate static final org.slf4j.Loggerprivate final SystemUserService -
Constructor Summary
ConstructorsConstructorDescriptionCvmLocalImporter(CvmImportService importService, ImportControlRepository controlRepository, SystemUserService systemUserService) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcheckAndProcess(int year, User bot) voidLimpa todas as tabelas relacionadas a dados financeiros e cadastrais.private voiddownloadAndRun(String url, StatementType type, User bot) voidForça a verificação e download dos últimos 10 anos de histórico.private booleanisRelevantFile(String name) voidVerifica se há atualizações nos arquivos do ano corrente e anterior.private voidprocessSmart(String url, StatementType type, User bot)
-
Field Details
-
log
private static final org.slf4j.Logger log -
importService
-
controlRepository
-
systemUserService
-
entityManager
private jakarta.persistence.EntityManager entityManager -
httpClient
-
-
Constructor Details
-
CvmLocalImporter
public CvmLocalImporter(CvmImportService importService, ImportControlRepository controlRepository, SystemUserService systemUserService)
-
-
Method Details
-
getImportName
- Specified by:
getImportNamein interfaceDataImporter- 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:
processPendingFilesin interfaceDataImporter
-
importFullHistory
public void importFullHistory()Força a verificação e download dos últimos 10 anos de histórico. Executado manualmente via AdminController.- Specified by:
importFullHistoryin interfaceDataImporter
-
checkAndProcess
-
processSmart
-
downloadAndRun
private void downloadAndRun(String url, StatementType type, User bot) throws IOException, InterruptedException - Throws:
IOExceptionInterruptedException
-
isRelevantFile
-
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:
clearDatain interfaceDataImporter
-