public String processarModelo(
      CpOrgaoUsuario ou, Map<String, Object> attrs, Map<String, Object> params) throws Exception {
    // Create the root hash
    Map root = new HashMap();
    root.put("root", root);

    root.putAll(attrs);
    root.put("param", params);

    String sTemplate = "[#compress]\n[#include \"GERAL\"]\n";
    if (ou != null) {
      sTemplate += "[#include \"" + ou.getAcronimoOrgaoUsu() + "\"]";
    }
    sTemplate += "\n" + (String) attrs.get("template") + "\n[/#compress]";

    Template temp = new Template((String) attrs.get("nmMod"), new StringReader(sTemplate), cfg);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Writer out = new OutputStreamWriter(baos);
    try {
      temp.process(root, out);
    } catch (TemplateException e) {
      return (e.getMessage() + "\n" + e.getFTLInstructionStack())
          .replace("\n", "<br/>")
          .replace("\r", "");
    } catch (IOException e) {
      return e.getMessage();
    }
    out.flush();
    return baos.toString();
  }
 public PessoaLotacaoParser(String codigo) throws AplicacaoException {
   super(null, null);
   if (codigo == null) return;
   Matcher matcher = pattern.matcher(codigo);
   if (!matcher.matches())
     throw new RuntimeException(
         "Erro de sintaxe na definição da lotação para qual o documento deve ser transferido. A sintaxe correta é, por exemplo: @RJSESIE.");
   else {
     String siglaPessoa = matcher.group(3);
     String orgaoPessoa = matcher.group(2);
     String orgaoLotacao = matcher.group(5);
     String siglaLotacao = matcher.group(6);
     if (siglaPessoa != null) {
       try {
         CpOrgaoUsuario orgao = null;
         {
           CpOrgaoUsuario example = new CpOrgaoUsuario();
           example.setSiglaOrgaoUsu(orgaoPessoa);
           orgao = (CpOrgaoUsuario) CpDao.getInstance().consultarPorSigla(example);
         }
         DpPessoaDaoFiltro filtro = new DpPessoaDaoFiltro();
         filtro.setSigla(orgaoPessoa + siglaPessoa);
         filtro.setIdOrgaoUsu(orgao.getIdOrgaoUsu());
         DpPessoa pessoa = (DpPessoa) CpDao.getInstance().consultarPorSigla(filtro);
         this.setPessoa(pessoa);
       } catch (Exception ex) {
       }
     }
     if (siglaLotacao != null) {
       try {
         CpOrgaoUsuario orgao = null;
         {
           CpOrgaoUsuario example = new CpOrgaoUsuario();
           example.setSiglaOrgaoUsu(orgaoLotacao);
           orgao = (CpOrgaoUsuario) CpDao.getInstance().consultarPorSigla(example);
         }
         DpLotacaoDaoFiltro filtro = new DpLotacaoDaoFiltro();
         filtro.setSigla(siglaLotacao);
         filtro.setIdOrgaoUsu(orgao.getIdOrgaoUsu());
         DpLotacao lotacao = (DpLotacao) CpDao.getInstance().consultarPorSigla(filtro);
         this.setLotacao(lotacao);
       } catch (Exception ex) {
       }
     }
   }
 }