Projeto Java para importação de dados de animais reais via arquivo CSV, com persistência em banco de dados SQLite.
Dados baseados na Lista Vermelha da IUCN (União Internacional para a Conservação da Natureza).
| Campo | Tipo | Descrição |
|---|---|---|
| id | inteiro | Identificador único |
| nome | texto | Nome popular do animal |
| especie | texto | Nome científico (nomenclatura binomial) |
| habitat | texto | Bioma ou ambiente principal |
| peso_kg | decimal | Peso médio em quilogramas |
| status_conservacao | texto | Classificação IUCN (Ex: Vulnerável, Em Perigo) |
No VS Code: clique na setinha ▾ ao lado do + no painel do terminal e escolha Command Prompt.
Instale o Eclipse Temurin JDK 17:
- Acesse: adoptium.net
- Baixe o arquivo
.msi(Windows x64) - Durante a instalação, marque obrigatoriamente:
- ✅ Modify PATH variable
- ✅ Set or override JAVA_HOME
- Após instalar, feche e reabra o terminal
- Verifique com:
java -versionejar --version
Ambos devem mostrar a versão 17.
O driver não vem no Java — precisa ser baixado separadamente. Execute no terminal (cmd):
curl -L -o lib\sqlite-jdbc.jar https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.45.3.0/sqlite-jdbc-3.45.3.0.jar
O sqlite-jdbc 3.45+ depende do SLF4J para logging interno. Sem essas bibliotecas ocorre o erro: NoClassDefFoundError: org/slf4j/LoggerFactory
curl -L -o lib\slf4j-api.jar https://repo1.maven.org/maven2/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar
curl -L -o lib\slf4j-simple.jar https://repo1.maven.org/maven2/org/slf4j/slf4j-simple/2.0.9/slf4j-simple-2.0.9.jar
Após os downloads sua pasta lib/ deve conter: lib/ ├── sqlite-jdbc.jar ├── slf4j-api.jar └── slf4j-simple.jar
O terminal Windows usa encoding antigo por padrão, exibindo emojis e acentos como ? ou caracteres corrompidos. Antes de executar, rode sempre:
chcp 65001
Isso ativa o UTF-8 no terminal atual.
javac -encoding UTF-8 -cp lib\sqlite-jdbc.jar -d out src\model\Animal.java src\file\AnimalCSVReader.java src\dao\AnimalDAO.java src\main\Main.java
Se não aparecer nenhuma mensagem de erro, a compilação foi um sucesso.
java -cp out;lib\sqlite-jdbc.jar;lib\slf4j-api.jar;lib\slf4j-simple.jar main.Main
O banco animais.db é criado automaticamente na pasta do projetona primeira execução.
Para facilitar o desenvolvimento, o projeto inclui o arquivo rodar.bat que limpa, compila e executa tudo com um único comando.
O que ele faz automaticamente:
- Ativa o encoding UTF-8 no terminal
- Apaga a pasta
out/com os.classantigos - Apaga o banco
animais.dbanterior - Recria a pasta
out/ - Compila todos os arquivos
.java - Executa o programa
Como usar:
Abra o cmd (não PowerShell) na pasta do projeto e digite:
rodar
Quando usar o rodar.bat:
- Sempre que alterar qualquer arquivo
.java - Quando quiser resetar o banco e reimportar os dados
- Para testar o sistema do zero
O arquivo animais.db é binário — o VS Code não consegue abrir diretamente. Para visualizar os dados em formato de tabela:
Instale a extensão SQLite Viewer no VS Code:
- Pressione Ctrl+Shift+X
- Pesquise: SQLite Viewer
- Instale a opção de Florian Klampfer
- Clique no arquivo animais.db no Explorer
- Os dados aparecem em uma tabela visual interativa
| Opção | Descrição |
|---|---|
| 1 | Importar animais do arquivo CSV (com relatório completo) |
| 2 | Listar por Nome (A → Z) |
| 3 | Listar por Habitat |
| 4 | Listar por Peso (maior → menor) |
| 5 | Listar por Status de Conservação (mais crítico primeiro) |
| 6 | Limpar banco de dados |
| 0 | Sair |
[x] Java com JDBC
[x] try-with-resources em todas as operações de I/O e banco
[x] Entidade Animal com 6 construtores parciais encadeados
[x] Separação em camadas: model, dao, file, main
[x] Mensagens de sucesso e erro no console (System.out / System.err)
[x] Menu interativo em Main.java
[x] Relatório de importação: total de registros + distribuição de atributos
[x] 4 tipos de ordenação
[x] 32 registros no CSV (encoding UTF-8)
[x] Tratamento de linhas malformadas por try/catch individual
[x] Batch insert com transação e rollback
[x] Integer.parseInt e com tratamento de exceção
| Símbolo | Status | Qtd no CSV |
|---|---|---|
| 🔴 | Em Perigo Crítico | 4 |
| 🟠 | Em Perigo | 6 |
| 🟡 | Vulnerável | 13 |
| 🟢 | Quase Ameaçado | 4 |
| 🔵 | Pouco Preocupante | 5 |