SubMacro

Propaganda
Utilizando o Framework SubMacro no
Desenvolvimento de Aplicações Java
para Internet
Kleber Taffarel
Novembro de 2008
[email protected]
Palestrante
Especialista em Engenharia de Websites pela UFMS/MS.
Professor Universitário nas Disciplinas de de Redes de
Computadores I, II e III e Linguagem Programação para
Internet pela Faculdade Estácio de Sá;
Desenvolvedor
da
Assetur,
onde
participa
do
desenvolvimento de sistemas usando ferramentas livres, além
de administração de servidores de Rede e Internet Linux;
Colaborador e usuário do software livre Java Framework
SubMacro.
Tópicos
O que é o SubMacro?
Funcionalidades
Estrutura de uma aplicação padrão SubMacro
SubMacroUtils
Construindo uma Macro
SubMacroUtils
Gerando uma nova tela com a SubMacroUtils
Considerações Finais
O que é o SubMacro?
O SubMacro é um framework que tem como objetivo
implementar funcionalidades comuns a diversas aplicações, o
que facilita e acelera o processo de desenvolvimento.
Um dos objetivos do projeto SubMacro é fornecer uma
alternativa para desenvolvimento de aplicações Web usando
Servlets, sem a necessidade de JSPs ou frameworks (JSF,
Struts, Spring, etc). Além disso busca-se oferecer uma
maneira automatizada de geração de telas de cadastro e de
filtro, em ambiente web e desktop.
Funcionalidades
Permitir que o desenvolvedor crie suas próprias tags, com formato
<#NOMEMACRO>, que será substituída em tempo real por algum
código gerado pela Servlet
Armazena os HTMLs templates em RAM (desempenho quase idêntico
a leitura de HTMLs estáticos)
É composto pelas seguintes classes:
Cmd, CmdImpl
Mail.java
HTMLProducer
HTMLProducerRet
PoolHtml.java
Possui o módulo SubMacroUtils que, dentre outras coisas, permite
fazer telas de cadastro (inserir/alterar/remover/consultar/imprimir)
apenas escrevendo arquivos XML, sem precisar codificar NADA na
Servlet
Estrutura padrão SubMacro
O SubMacro é composto pelas seguintes classes:
Cmd CmdImpl
São classes que permitem organizar a forma como a Servlet fará o papel
de Controller
Mail
Responsável pelo acesso aos recursos de e-mail da API Java
HttpServletSubMacro
A servlet do desenvolvedor é criada como filha desta classe, e não da
classe original HttpServlet
HTMLProducer
É responsável por processar as substituições de macros nos templates
HTML
HTMLProducerRet
Implementar as suas macros específicas.
PoolHtml
Responsável por guardar em uma estrutura de dados dinâmica todos os
arquivos template HTML
Estrutura padrão SubMacro
Macros
Construindo uma
Macro:
As macros personalizadas pelo usuário devem ser implementadas
na classe HTMLProducer da aplicação:
public static final String[][] LISTATAGRETSubMacro= {
// E = equalsIgnoreCase, S = startsWith
{"E", "NOMEUSUARIOLOGADO"},
{"E", "COMBOVOLUNTARIO"}, // Combo Voluntário
{"E", "EDITARHORARIO"}, // Editar Horario
{"E", "LISTARUSUARIO"} // Listagem de Usuarios
:
}
Construindo uma Macro
:case 18: { //Listar Usuários
String SessionID = ((HttpSession) getRequest().getAttribute("session")).getId();
String op = request.getParameter("op");
HTMLBuf = new StringBuffer("");
String CorAtual = Cor1;
try {
pstmtHTML = connLocal.prepareStatement("SELECT * FROM USUARIO");
rsHTML = pstmtHTML.executeQuery();
if (rsHTML.next()) {
HTMLBuf.append("<tr bgcolor='" + Cor + "'>");
HTMLBuf.append("<td width='25%' class='tittab'>Login:</td>");
HTMLBuf.append("<td width='50%' class='tittab'>Nome:</td>");
HTMLBuf.append("<td width='25%' class='tittab'>E-mail:</td></tr>");
do {
HTMLBuf.append("<tr bgcolor='" + CorAtual + "'>");
HTMLBuf.append("<td width='25%' class='negrito'>" + rsHTML.getString("Login") + "</td>");
HTMLBuf.append("<td width='50%' class='negrito'>" + rsHTML.getString("Nome") + "</td>");
HTMLBuf.append("<td width='25%' class='negrito'>" + rsHTML.getString("Email") + "</td></tr>");
CorAtual = GeralHTML.getCorAtual(Cor1, Cor2, CorAtual);
} while (rsHTML.next());
rsHTML.close();
}
} catch (Exception e) {
e.printStackTrace();
HTMLBuf = new StringBuffer("");
}
ReplaceText[0] = HTMLBuf.toString();
break;
}
Exemplo de Tela
:
SubMacroUtils
A ferramenta SubMacroUtils é um módulo do SubMacro
com diversos recursos para desenvolvimento de aplicações
web e desktop. Seu principal recurso é a geração de telas de
cadastro (inserção, alteração, remoção, consulta, impressão)
baseada em templates XML.
Para utilizar o SubMacroUtils, é necessário disponibilizar
para a aplicação Web as mesmas bibliotecas requisitadas pelo
SubMacro, pois o SubMacroUtils é um módulo baseado no
SubMacro
SubMacroUtils
Permite fazer telas de cadastro (inserir/alterar/remover/consultar/imprimir)
apenas escrevendo arquivos XML, sem precisar codificar NADA na Servlet
Criptografia usando algoritmo MD5;
Cálculos aritméticos com datas
Esquema de mascaras generico em JavaScript;
Chamadas de componentes para relatórios JasperReports (em formato HTML,
PDF, XLS, CVS, TXT)
Consistencia de campos obrigatorios em JavaScript;
Catálogo de mensagens de erros comuns para aplicações;
Formatação de datas, horas e números reais;
Classes utilitárias Geral.java e GeralHTML.java, com alguns métodos
genéricos;
Inclusão de código SQL em arquivo de properties externo, para facilitar
manutenção;
Controle de autenticação de usuários e, em seguida, checagem do nível de
acesso do usuário autenticado às opções de menu do sistema;
Estrutura padrão SubMacroUtils
Abaixo algumas das classes que compoem o SubMacroUtils:
Boleto,Boleto Baixa
Classes responsáveis pela manipulação de boletos bancários, com
operações como impressão e baixa de boletos bancários
Cripto MD5
responsável pela criptografia de strings utilizando o padrão MD5, muito
útil para garantir segurança no envio de senhas pela rede
HTMLProducerErro
classe filha de HTMLProducer, com macros pré-definidas para exibição de
mensagens de erro
HttpProducerTab
classe filha de HTMLProducerRet do pacote SubMacro. Deve ser extendida
pelo desenvolvedor para implementar as suas macros específicas,
integrando assim a função de macro-substituição oferecida pelo
SubMacro
HttpServletTab
principal classe do módulo e subclasse de
SubMacro.HttpServletSubMacro. O servlet principal da aplicação deve ser
extendido de HttpServletTab. É responsável pelo gerenciamento do pool
de arquivos XML e do arquivo properties contendo os SQLs usados na
aplicação .
Estrutura padrão SubMacroUtils
Abaixo algumas das classes que compoem o SubMacroUtils:
MethodsTab
responsável pela validação dos campos das telas de cadastro
Paginação
classe para realizar paginação de resultados obtidos através de uma
consulta ao banco
PoolXml
mesma função da classe PoolHtml do pacote SubMacro. É responsável
por guardar e gerenciar em uma estrutura de dados dinâmica todos os
arquivos template XML já acessados, agilizando o acesso aos arquivos
XML
Print
classe responsável pela impressão de relatórios usando JasperReports
PText
classe usada para enviar dados para o Servidor PText que imprime em
modo texto, usando impressora matricial
SubMacroUtils
Permite fazer telas de cadastro (inserir/alterar/remover/consultar/imprimir)
apenas escrevendo arquivos XML, sem precisar codificar NADA na Servlet
Criptografia usando algoritmo MD5;
Cálculos aritméticos com datas
Esquema de mascaras generico em JavaScript;
Chamadas de componentes para relatórios JasperReports (em formato HTML,
PDF, XLS, CVS, TXT)
Consistencia de campos obrigatorios em JavaScript;
Catálogo de mensagens de erros comuns para aplicações;
Formatação de datas, horas e números reais;
Classes utilitárias Geral.java e GeralHTML.java, com alguns métodos
genéricos;
Inclusão de código SQL em arquivo de properties externo, para facilitar
manutenção;
Controle de autenticação de usuários e, em seguida, checagem do nível de
acesso do usuário autenticado às opções de menu do sistema;
Geração de Telas
O principal recurso oferecido pelo SubMacroUtils é a geração de telas
de cadastro e de filtros a partir de templates XML. Para utilizá-lo, é
necessário montar a seguinte estrutura de diretórios dentro do diretório
principal da aplicação:
css: formatação CSS dos arquivos HTML
imagens: imagens necessárias ao JasperReports, além das
imagens específicas de cada aplicação
jasper: relatórios produzidos pelo JasperReports
js: arquivo de funções Javascript para controle da interface
com o usuário
WEB-INF: arquivos da aplicação Web
xml: templates XML das telas de cadastro e dos filtros
No diretório principal da aplicação ficam os templates HTML
(tab*.html). Esses templates são utilizados na geração das telas de
cadastro e dos filtros
Exemplo de Tela - Listagem
:
Exemplo de Tela - Inserção
:
Exemplo de Tela - Filtro
:
Exemplo de Impressão - Relatório
:
Exemplo de Impressão - Boleto
:
Módulos SubMacro
SubMacro: implementação do modelo MVC através de macrosubstituições.
SubMacroUtils: recursos para desenvolvimento de aplicações web e
desktop, como gerenciamento de impressão, baixa de boletos
bancários e relatórios HTML, PDF, XLS. Além disso a geração de telas
de cadastro e filtros é facilitada através da utilização de arquivos XML
SubMacroGen: facilitar a criação dos arquivos XML utilizados na
criação de telas de cadastro pelas ferramentas SubMacroUtils e
SubMacroForms
SubMacroForms: versão desktop do SubMacroUtils, utilizando
também arquivos XML.
Coniderações Finais
Portal Submacro
Integrável a outros Frameworks
Desenvolvido em nosso Estado
Performance Comprovada
Vamos prestigiar
Use e confira
Versões Estáveis
Equipe qualificada e comprometida com o projeto
Referências
Portal Submacro
http://portalsubmacro.intersite.com.br:8080/jetnuke/
Site da projeto SubMacro no java.net
https://submacro.dev.java.net/
Download