{"id":29171997,"url":"https://github.com/devmboo/importfiles","last_synced_at":"2026-05-02T05:05:13.628Z","repository":{"id":301883574,"uuid":"1010566250","full_name":"DevMboo/importfiles","owner":"DevMboo","description":"This Java application efficiently manages file uploads, supporting asynchronous processing and multiple simultaneous uploads, making it suitable for high-demand environments.","archived":false,"fork":false,"pushed_at":"2025-06-29T11:02:59.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-29T12:19:35.795Z","etag":null,"topics":["imported","java","javaservlet","javaweb","postgresql"],"latest_commit_sha":null,"homepage":"https://devmboo.github.io/blog/src/index.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DevMboo.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-29T10:53:57.000Z","updated_at":"2025-06-29T11:03:02.000Z","dependencies_parsed_at":"2025-06-29T12:19:39.333Z","dependency_job_id":"c4cbf6dc-29b4-45d3-983f-c218f20eba07","html_url":"https://github.com/DevMboo/importfiles","commit_stats":null,"previous_names":["devmboo/importfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DevMboo/importfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevMboo%2Fimportfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevMboo%2Fimportfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevMboo%2Fimportfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevMboo%2Fimportfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DevMboo","download_url":"https://codeload.github.com/DevMboo/importfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevMboo%2Fimportfiles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262969875,"owners_count":23392530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["imported","java","javaservlet","javaweb","postgresql"],"created_at":"2025-07-01T13:09:59.409Z","updated_at":"2026-05-02T05:05:13.600Z","avatar_url":"https://github.com/DevMboo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"```markdown\n# Projeto UploadService Java\n\nEste projeto é uma aplicação Java para upload e processamento de arquivos CSV e XLSX, com persistência em banco de dados.\n\n## Requisitos\n\n- Java 11 ou superior\n- [Apache POI](https://poi.apache.org/) (para leitura de arquivos XLSX)\n- [Log4j 2](https://logging.apache.org/log4j/2.x/) (logging)\n- [Commons IO](https://commons.apache.org/proper/commons-io/) (utilitários de IO)\n\n## Instalação das Dependências\n\nBaixe os seguintes JARs e coloque-os na pasta `lib/` do projeto:\n\n- `log4j-api-2.20.0.jar`\n- `log4j-core-2.20.0.jar`\n- `commons-io-2.11.0.jar` (ou superior)\n- JARs do Apache POI (ex: `poi-5.x.x.jar`, `poi-ooxml-5.x.x.jar`, `poi-ooxml-lite-5.x.x.jar`, `xmlbeans-5.x.x.jar`, etc.)\n\nVocê pode baixar os JARs em [Maven Repository](https://mvnrepository.com/).\n\n## Estrutura do Projeto\n\n```\nsrc/\nMain.java\nservices/\nUploadService.java\nrepositories/\nTbRefBasesRepository.java\nUploadRepository.java\n...\nlib/\n(coloque todos os JARs aqui)\nuploads/\nbases/\n(arquivos enviados)\n```\n\n## Como Executar\n\nNo terminal, execute:\n\n```sh\njava -cp \"lib/*;src\" Main\n```\n\n## Funcionalidades\n\n- Upload de arquivos CSV e XLSX\n- Processamento assíncrono dos arquivos\n- Inserção em lote no banco de dados\n- Log detalhado de erros e progresso\n\n## Observações\n\n- Certifique-se de que as dependências estão corretas e atualizadas.\n- O projeto não utiliza Maven/Gradle, então as dependências devem ser gerenciadas manualmente.\n- Configure o banco de dados conforme necessário nos repositórios.\n\n---\n\n## Detalhes do Funcionamento e Arquitetura\n\n### Passo a Passo das Funcionalidades\n\n1. **Seleção da Base de Dados**\n    - A aplicação utiliza a tabela `tb_ref_bases` para identificar a base de dados e a tabela de destino.\n    - Estrutura esperada da tabela:\n      ```sql\n      SELECT id_bases, nome_tabela_raw, descricao, cod_documento, exemplo_base, status\n      FROM public.tb_ref_bases;\n      ```\n    - O usuário deve garantir que a base de dados e as tabelas estejam organizadas conforme esse padrão.\n\n2. **Upload e Processamento**\n    - O upload dos arquivos (CSV ou XLSX) é feito via web service.\n    - Após o upload, a aplicação lê as colunas do arquivo e prepara os dados para inserção.\n\n3. **Inserção em Lote**\n    - O fluxo de inserção é feito em lotes de 5000 linhas por operação, otimizando a performance e reduzindo o tempo de processamento.\n    - Cada lote é inserido na tabela de destino definida na base selecionada.\n\n4. **Arquitetura**\n    - A aplicação é desenvolvida em Java puro, sem uso de frameworks externos.\n    - O serviço roda como um web service simples, responsável pelo upload e processamento das cargas.\n\n### Rotas Disponíveis\n\nA aplicação expõe as seguintes rotas HTTP:\n\n- `GET /api` — Endpoint principal para verificação do serviço.\n- `GET /api/bases` — Retorna as bases disponíveis para upload.\n- `POST /api/uploads` — Realiza o upload do arquivo e inicia o processamento.\n\nExemplo de definição das rotas:\n```java\npublic void loadRoutes() {\n    Router router = new Router();\n    Router.addRoute(\"GET\", \"/api\", ApiController::get);\n    Router.addRoute(\"GET\", \"/api/bases\", ApiController::bases);\n    Router.addRoute(\"POST\", \"/api/uploads\", ApiController::uploads);\n}\n```\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmboo%2Fimportfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevmboo%2Fimportfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmboo%2Fimportfiles/lists"}