Skip to content

Releases: KrystianYCSilva/min-java6-webapp

Adicionando Zk no Front

10 Feb 23:27
38aa34c

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: V1.2.0...V2.0.0

Adicionando JPA

10 Feb 21:21

Choose a tag to compare

Migração concluída para padrão JPA completo na camada de persistência.

  • Dependência JPA do Hibernate adicionada em pom.xml:48 (hibernate-entitymanager).
  • Bootstrap JPA padronizado com persistence.xml em src/main/resources/META-INF/persistence.xml:6 (PU RESOURCE_LOCAL, classes explícitas e exclude-unlisted-classes).
  • Provedor de persistência migrado para EntityManagerFactory/EntityManager em src/main/java/br/gov/inep/censo/config/HibernateConnectionProvider.java:39.
  • Template transacional JPA criado em src/main/java/br/gov/inep/censo/dao/AbstractJpaDao.java:13.
  • Todos os DAOs migrados de Session/Transaction para EntityManager/EntityTransaction, incluindo JPQL e SQL nativo onde necessário:
    • src/main/java/br/gov/inep/censo/dao/AlunoDAO.java:16
    • src/main/java/br/gov/inep/censo/dao/CursoDAO.java:16
    • src/main/java/br/gov/inep/censo/dao/CursoAlunoDAO.java:17
    • src/main/java/br/gov/inep/censo/dao/DocenteDAO.java:15
    • src/main/java/br/gov/inep/censo/dao/IesDAO.java:15
    • src/main/java/br/gov/inep/censo/dao/LayoutCampoDAO.java:16
    • src/main/java/br/gov/inep/censo/dao/OpcaoDAO.java:17
    • src/main/java/br/gov/inep/censo/dao/UsuarioDAO.java:11
  • Legado removido:
    • src/main/java/br/gov/inep/censo/dao/AbstractHibernateDao.java
    • src/main/resources/hibernate.cfg.xml
  • Documentação atualizada para o novo baseline JPA:
    • README.md:7
    • docs/ARCHITECTURE.md:21
    • docs/HIBERNATE-MIGRATION.md:29
    • docs/TEST-PLAN.md:24

Validação executada:

  • mvn clean '-Dmaven.repo.local=.m2/repository' '-Dmaven.compiler.source=1.7' '-Dmaven.compiler.target=1.7' test
  • Resultado: BUILD SUCCESS
  • Testes: 38 executados, 0 falhas, 0 erros, 1 skipped
  • JaCoCo check: aprovado (All coverage checks have been met)

Adicionado Hibernate

10 Feb 20:49

Choose a tag to compare

Migração concluída para Hibernate nativo (sem JPA), mantendo compatibilidade com Java 6 e H2.

O que foi implementado

  • Removida dependência hibernate-entitymanager em pom.xml.

  • Consolidada infraestrutura Hibernate em src/main/java/br/gov/inep/censo/config/HibernateConnectionProvider.java (SessionFactory/Sessions, dialeto por URL, ciclo de vida).

  • Evoluída src/main/java/br/gov/inep/censo/config/ConnectionFactory.java para resolver driver por URL (H2/PostgreSQL/MySQL/DB2).

  • Criada base transacional src/main/java/br/gov/inep/censo/dao/AbstractHibernateDao.java.

  • Removido legado JDBC base src/main/java/br/gov/inep/censo/dao/AbstractJdbcDao.java.

  • DAOs migrados para Session/Transaction:

    • src/main/java/br/gov/inep/censo/dao/AlunoDAO.java
    • src/main/java/br/gov/inep/censo/dao/CursoDAO.java
    • src/main/java/br/gov/inep/censo/dao/DocenteDAO.java
    • src/main/java/br/gov/inep/censo/dao/IesDAO.java
    • src/main/java/br/gov/inep/censo/dao/MunicipioDAO.java
    • src/main/java/br/gov/inep/censo/dao/OpcaoDAO.java
    • src/main/java/br/gov/inep/censo/dao/LayoutCampoDAO.java
    • src/main/java/br/gov/inep/censo/dao/UsuarioDAO.java
  • Adicionado relacionamento ORM em src/main/java/br/gov/inep/censo/model/CursoAluno.java (Aluno/Curso via many-to-one, preservando alunoId/cursoId).

  • Criados mapeamentos XML *.hbm.xml em src/main/resources/br/gov/inep/censo/model/ para entidades principais.

  • Adicionado teste de regressão de cascade em src/test/java/br/gov/inep/censo/dao/AlunoDAOTest.java.
    Docs e contexto atualizados

  • README.md

  • docs/ARCHITECTURE.md

  • docs/TEST-PLAN.md

  • docs/HIBERNATE-MIGRATION.md (reorganizado para Fase 1 -> Fase 2)

  • docs/HIBERNATE-NATIVE-WHAT-CHANGED.md (novo documento solicitado)

  • Contexto: .context/_meta/tech-stack.md, .context/_meta/key-decisions.md, .context/_meta/project-overview.md, .context/patterns/architecture.md, .context/standards/architectural-rules.md, .context/standards/code-

  • Comando executado:

    • mvn '-Dmaven.repo.local=.m2/repository' '-Dmaven.compiler.source=1.7' '-Dmaven.compiler.target=1.7' test
  • Resultado:

    • BUILD SUCCESS
    • Tests run: 38, Failures: 0, Errors: 0, Skipped: 1
    • JaCoCo check: aprovado

Java puro, sem freamwork

10 Feb 19:45

Choose a tag to compare

ARCHITECTURE

1. Objetivo

Descrever a arquitetura do censo-superior-webapp, um monolito web Java 6 para cadastro e processamento dos registros do Censo Superior.

Modulos atuais:

  1. Aluno (Registro 41)
  2. Curso (Registro 21)
  3. CursoAluno (Registro 42)
  4. Docente (Registro 31)
  5. IES (Registro 11 - laboratorio)

2. Visao Arquitetural

O sistema segue arquitetura em camadas com separacao clara de responsabilidades:

  1. web: entrada HTTP, navegacao e renderizacao JSP.
  2. service: regras de negocio, validacoes e import/export TXT pipe.
  3. dao: persistencia JDBC e SQL.
  4. model: entidades e enums de dominio.
  5. util: utilitarios transversais (hash, validacoes, mapeamento).
flowchart LR
    A[Browser] --> B[AuthFilter]
    B --> C[CsrfFilter]
    C --> D[Servlets]
    D --> E[Services]
    E --> F[DAOs]
    F --> G[(H2 Database)]
    D --> H[JSP Views]

3. Estrutura de Componentes

Camada Pacote principal Responsabilidade Exemplos
Web br.gov.inep.censo.web Controller HTTP e roteamento AbstractActionServlet, AlunoServlet, CursoServlet, CursoAlunoServlet, DocenteServlet, IesServlet
Filtro br.gov.inep.censo.web.filter Protecao de rotas autenticadas e anti-CSRF AuthFilter, CsrfFilter
Service br.gov.inep.censo.service Regra de negocio e orquestracao AlunoService, CursoService, CursoAlunoService, DocenteService, IesService
DAO br.gov.inep.censo.dao SQL, mapeamento, CRUD e consultas AlunoDAO, CursoDAO, CursoAlunoDAO, DocenteDAO, IesDAO, MunicipioDAO
Modelo br.gov.inep.censo.model Entidades persistidas Aluno, Curso, CursoAluno, Docente, Ies, Municipio, Usuario
Dominio auxiliar br.gov.inep.censo.domain Constantes de dominio/layout CategoriasOpcao, ModulosLayout
Utilitarios br.gov.inep.censo.util Funcoes de apoio reutilizaveis ValidationUtils, PasswordUtil, RequestFieldMapper
Configuracao br.gov.inep.censo.config Infra de banco e bootstrap ConnectionFactory, DatabaseBootstrapListener

4. Fluxos Principais

4.1 Autenticacao

  1. Usuario acessa login.jsp.
  2. LoginServlet valida credencial via AuthService.
  3. Senha e validada por PasswordUtil com formato PBKDF2 (PBKDF2$iter$salt$hash) e compatibilidade com hash legado SHA-256.
  4. Em login bem-sucedido com hash legado, o sistema faz upgrade transparente para PBKDF2.
  5. Sessao HTTP recebe usuarioLogado.
  6. AuthFilter protege /app/* e redireciona sem sessao.
  7. CsrfFilter valida token para requisicoes POST em /app/*.

4.2 Operacoes de modulo

  1. Servlet recebe acao (lista, form, salvar, mostrar, excluir, importar, exportar).
  2. AbstractActionServlet despacha a acao para comando registrado (Map<String, ActionCommand>).
  3. Service valida regras e consistencia.
  4. DAO executa operacao JDBC no H2.
  5. JSP renderiza saida com escape HTML via ViewUtils.e(...).
  6. Servlet encaminha para JSP de lista, formulario ou visualizacao.

Observacao: CursoAluno foi separado em curso-aluno-list.jsp e curso-aluno-form.jsp para melhorar legibilidade.

4.3 Importacao e exportacao TXT pipe

  1. Entrada no formato pipe (|).
  2. Services fazem parse e mapeamento por registro (11, 21, 31, 41, 42).
  3. Persistencia cobre campos fixos e complementares de layout.
  4. Exportacao gera TXT individual ou em lote.
  5. Registro 10 pode ser usado como cabecalho no fluxo de importacao de IES.

5. Persistencia e Modelo de Dados

Tabelas centrais:

  1. usuario
  2. aluno (Registro 41)
  3. curso (Registro 21)
  4. curso_aluno (Registro 42)
  5. docente (Registro 31)
  6. ies (Registro 11)
  7. municipio (tabela de apoio)

Tabelas auxiliares:

  1. dominio_opcao
  2. aluno_opcao
  3. curso_opcao
  4. curso_aluno_opcao
  5. layout_campo
  6. aluno_layout_valor
  7. curso_layout_valor
  8. curso_aluno_layout_valor
  9. docente_layout_valor
  10. ies_layout_valor

Scripts de banco:

  1. src/main/resources/db/schema.sql
  2. src/main/resources/db/seed.sql
  3. src/main/resources/db/seed_layout.sql
  4. src/main/resources/db/seed_layout_ies_docente.sql
  5. src/main/resources/db/seed_municipio.sql

6. Decisoes Arquiteturais Relevantes

  1. JDBC puro para controle explicito de SQL e compatibilidade com Java 6.
  2. Monolito em camadas para simplicidade de manutencao em stack legado.
  3. Modelagem de campos de layout por metadados para suportar evolucao de leiaute.
  4. Sessao HTTP + filtro para autenticacao sem dependencia externa.
  5. Tabela de apoio municipio para validar consistencia de UF/codigo de municipio em Docente e IES.
  6. Builder Pattern para construcao de entidades com muitos campos de formulario (Aluno, Curso, CursoAluno, Docente, Ies).
  7. Camada web consumindo service para acesso a dados de tela, evitando dependencia direta de DAO.
  8. Synchronizer Token Pattern para CSRF em operacoes mutaveis de /app/*.
  9. Output Encoding centralizado com ViewUtils.e(...) para mitigar XSS refletido/armazenado em JSP.
  10. Migração progressiva de hash de senha: compatibilidade legado + rehash automatico para PBKDF2.
  11. Command Pattern no web layer para despacho de acao sem cadeias extensas de if/else.

7. Qualidade, Build e Testes

Build:

mvn clean package

Testes (workspace atual):

mvn -Dmaven.repo.local=.m2/repository -Dmaven.compiler.source=1.7 -Dmaven.compiler.target=1.7 test

Qualidade:

  1. JaCoCo com gate minimo de 80% de cobertura de linha.
  2. Escopo do gate: pacotes dao, service e util.
  3. Suite com testes unitarios, integracao e E2E (E2E desativado por padrao).

8. Restricoes e Riscos

  1. Stack legado (Servlet 2.5, JSP 2.1, Java 6) limita uso de recursos modernos.
  2. Mudancas de schema exigem sincronizacao entre SQL, DAO, service e testes.
  3. Acoplamento entre importacao/exportacao e metadados de layout exige regressao cuidadosa.
  4. Seguranca depende de manter ViewUtils.e(...) em toda saida JSP e _csrf em todo POST de /app/*.

9. Referencias no repositorio

  1. README.md
  2. docs/TEST-PLAN.md
  3. src/main/java/br/gov/inep/censo/web
  4. src/main/java/br/gov/inep/censo/service
  5. src/main/java/br/gov/inep/censo/dao
  6. src/main/resources/db