====== Templates de Documentos ====== Utilizado para que módulos dos sistemas possam criar documentos utilizando templates cadastrados previamente no SIGAdmin. No texto do documento é possível cadastrar variáveis que serão substituídas por algum texto na hora da criação do documento. Essas variáveis devem ser digitadas entre ##, por exemplo: ##ASSUNTO##, ##MOTIVO##, etc. ===== Implementação ===== Foram criadas as classes ''br.ufrn.arq.templates.TipoDocumentoTemplate'' e ''br.ufrn.arq.templates.TemplateDocumento'', que contém informações sobre o tipo de documento e o dados sobre o documento a ser criado, como o seu tipo, o título/assunto e o texto. Os objetos dessa classe são cadastrados no SIGAdmin para posterior uso. Além disso, foi criada a classe ''br.ufrn.arq.dao.TemplateEmailDao'', que possui um método chamado ''findByCodigo(String codigo)'', que permite a busca de um template de documento através do seu código. Tendo um objeto do tipo TemplateDocumento, é possível substituir suas variáveis por texto através do método ''public void substituirVariaveis(Map params)'', que recebe como parâmetro um mapa de variáveis, onde a chave é o nome da variável e o valor é o texto que irá substituir a variável. O método percorre o mapa de parâmetros substituindo as variáveis existentes no template pelos valores correspondentes no mapa. Após a substituição das variáveis, pode-se utilizar o título/assunto e o texto do objeto TemplateDocumento para os fins que forem necessários. Além disso, foi adicionado à classe ''br.ufrn.arq.email.Mail'', um método estático chamado ''enviaComTemplate'', que recebe como parâmetros o nome do destinatário, o e-mail do destinatário, o código do template associado ao e-mail e um mapa com valores para substituir as variáveis existentes no template. , o método ''sendMessage'' da classe ''br.ufrn.arq.email.Mail'' é chamado, enfileirando a mensagem para posterior envio do e-mail. Os templates de documentos utilizados para envio de e-mail devem ter o tipo de documento "E-Mail". ===== Cadastro ===== O cadastro de templates de documentos é realizado no SIGAdmin, através do link Configurações do Sistema -> Templates de Documentos. No cadastro são exigidos o código do template, o tipo de documento, o título/assunto do documento e o texto. Assim como acontece com as [[desenvolvimento:especificacoes:arquitetura:mensagens|mensagens de aviso]] e os [[desenvolvimento:especificacoes:sigadmin:casos_de_uso:portal_da_administracao:config_do_sistema::parametros:listar_alterar_parametros|parâmetros]], o código dos templates deve ser uma String formada pelo código do sistema, underline, o código do subsistema, underline e um sequencial por subsistema. ===== Utilização ===== O template de documentos deve ter sido cadastrado no SIGAdmin e uma constante com o valor do código do template deve ter sido criada no sistema que irá utilizar o template. As classes que contém as constantes para cada sistema são as seguintes: ^ Sistema ^ Classe ^ | Comum | br.ufrn.arq.mensagens.TemplatesDocumentos | | SIGAA | br.ufrn.sigaa.mensagens.TemplatesDocumentos | | SIGRH | br.ufrn.sigrh.mensagens.TemplatesDocumentos | | SIPAC | br.ufrn.sipac.mensagens.TemplatesDocumentos | Para criar um documento a partir de um template, deve-se buscar um template através do método ''findByCodigo(String codigo)'' de ''TemplateDocumentoDao'', criar um mapa com várias entradas, uma para cada variávei presente no template e, em seguida, chamar o método ''substituirVariaveis''. Para pegar o título/assunto e o texto do documento, deve-se usar os métodos ''getTitulo()'' e ''getTexto()''. Para enviar e-mails com templates, deve-se criar um mapa com várias entradas, uma para cada variávei presente no template. A chave da entrada do mapa deve ser o nome da variávei (com ou sem o ##) e o valor da entrada deve ser o texto que irá substituir a variável na mensagem. Em seguida, deve-se chamar o método Mail.enviaComTemplate, passando como parâmetros o nome do destinatário, o e-mail do destinatário, o código do template a ser utilizado e o mapa de variáveis (ou null, caso não seja necessário). ===== Exemplo 1 ===== Map params = new HashMap(); params.put("MOTIVO", "Teste dos templates de e-mail"); params.put("ANO", "2009"); TemplateDocumento template = getDAO(TemplateDocumentoDao.class).findByCodigo(TemplatesDocumentos.TEMPLATE_EXEMPLO); template.substituirVariaveis(params); template.getTitulo(); // Título/assunto do documento template.getTexto(); // Texto do documento ===== Exemplo 2 ===== Map params = new HashMap(); params.put("MOTIVO", "Teste dos templates de e-mail"); params.put("ANO", "2009"); Mail.enviaComTemplate("David Pereira", "david@info.ufrn.br", TemplatesDocumentos.TEMPLATE_EXEMPLO, params);