/* * Copyright (C) 2007-2007 the GSAN - Sistema Integrado de Gestão de Serviços de Saneamento * * This file is part of GSAN, an integrated service management system for Sanitation * * GSAN is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * GSAN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* * GSAN - Sistema Integrado de Gestão de Serviços de Saneamento * Copyright (C) <2007> * Adriano Britto Siqueira * Alexandre Santos Cabral * Ana Carolina Alves Breda * Ana Maria Andrade Cavalcante * Aryed Lins de Araújo * Bruno Leonardo Rodrigues Barros * Carlos Elmano Rodrigues Ferreira * Cláudio de Andrade Lira * Denys Guimarães Guenes Tavares * Eduardo Breckenfeld da Rosa Borges * Fabíola Gomes de Araújo * Flávio Leonardo Cavalcanti Cordeiro * Francisco do Nascimento Júnior * Homero Sampaio Cavalcanti * Ivan Sérgio da Silva Júnior * José Edmar de Siqueira * José Thiago Tenório Lopes * Kássia Regina Silvestre de Albuquerque * Leonardo Luiz Vieira da Silva * Márcio Roberto Batista da Silva * Maria de Fátima Sampaio Leite * Micaela Maria Coelho de Araújo * Nelson Mendonça de Carvalho * Newton Morais e Silva * Pedro Alexandre Santos da Silva Filho * Rafael Corrêa Lima e Silva * Rafael Francisco Pinto * Rafael Koury Monteiro * Rafael Palermo de Araújo * Raphael Veras Rossiter * Roberto Sobreira Barbalho * Rodrigo Avellar Silveira * Rosana Carvalho Barbosa * Sávio Luiz de Andrade Cavalcante * Tai Mu Shih * Thiago Augusto Souza do Nascimento * Tiago Moreno Rodrigues * Vivianne Barbosa Sousa * * Este programa é software livre; você pode redistribuí-lo e/ou * modificá-lo sob os termos de Licença Pública Geral GNU, conforme * publicada pela Free Software Foundation; versão 2 da * Licença. * Este programa é distribuído na expectativa de ser útil, mas SEM * QUALQUER GARANTIA; sem mesmo a garantia implícita de * COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM * PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais * detalhes. * Você deve ter recebido uma cópia da Licença Pública Geral GNU * junto com este programa; se não, escreva para Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307, USA. */ package gcom.gerador; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.Vector; public class Gerador { public static void main(String arq[]) throws Exception { Vector v = new Vector(); v.add("id"); v.add("nome"); v.add("nomeAbreviado"); v.add("cpf"); v.add("rg"); v.add("dataEmissaoRg"); v.add("dataNascimento"); v.add("cnpj"); v.add("email"); v.add("indicadorUso"); v.add("ultimaAlteracao"); v.add("orgaoExpedidorRg"); v.add("cliente"); v.add("pessoaSexo"); v.add("profissao"); v.add("unidadeFederacao"); v.add("clienteTipo"); v.add("ramoAtividade"); v.add("clienteEnderecos"); v.add("clienteFones"); v.add("clienteEndereco"); String casoUso = "Cliente"; String diretorio = "c:\\template"; //consultajsp(v, casoUso); new Gerador().processar(v, diretorio, casoUso); } public void processar(Collection atributos, String diretorio, String casoUso) { try { StringBuffer consultaAction = consultaAction(atributos, casoUso); escreverArquivo (consultaAction,diretorio,"Consulta"+casoUso+"Action"); StringBuffer consultaActionForm = consultaActionForm(atributos, casoUso); escreverArquivo (consultaActionForm,diretorio,"Consulta"+casoUso+"ActionForm"); StringBuffer atualizarAction = atualizarAction(atributos, casoUso); escreverArquivo (atualizarAction,diretorio,"Atualizar"+casoUso+"Action"); StringBuffer atualizarActionForm = atualizarActionForm(atributos, casoUso); escreverArquivo (atualizarActionForm,diretorio,"Atualizar"+casoUso+"ActionForm"); StringBuffer consultajsp = consultajsp(atributos, casoUso); escreverArquivo (consultajsp,diretorio,"jsp"); //StringBuffer consultaAction = //(atributos, casoUso); } catch (Exception e) { e.printStackTrace(); } } private void escreverArquivo (StringBuffer sb, String diretorio, String arquivo) throws IOException{ if (!new File(diretorio).exists()) { new File(diretorio).mkdirs(); } FileOutputStream output = new FileOutputStream(new File(diretorio,arquivo + ".java")); try { output.write(sb.toString().getBytes()); } finally { if (output != null) output.close(); } } /* public static void processar (Collection atribuitos, String casoUso, String template) throws IOException { Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File("c:\\template")); cfg.setObjectWrapper(new DefaultObjectWrapper()); Map root = new HashMap(); root.put("casoUso","Cliente"); Template temp = cfg.getTemplate("exemplo.tpl"); Writer out = new OutputStreamWriter(System.out); temp.process(root, out); out.flush(); out.close(); } */ public StringBuffer consultaAction(Collection atributos, String casoUso) throws IOException { StringBuffer sb = new StringBuffer(); sb.append("package gcom.gui.cadastro.tarifasocial;");sb.append("\n");sb.append("\n"); sb.append("import gcom.cadastro.cliente.FiltroClienteImovel;");sb.append("\n"); sb.append("import gcom.fachada.Fachada;");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomAction;");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomActionForm;");sb.append("\n"); sb.append("import gcom.gui.ControladorGcomAction;");sb.append("\n"); sb.append("import gcom.gui.ControladorGcomActionForm;");sb.append("\n"); sb.append("import gcom.util.filtro.Filtro;");sb.append("\n"); sb.append("import gcom.util.filtro.ParametroSimples;");sb.append("\n");sb.append("\n"); sb.append("import java.util.Collection;");sb.append("\n");sb.append("\n"); sb.append("public class Consulta"+casoUso+"Action extends ControladorConsultaGcomAction {");sb.append("\n");sb.append("\n"); sb.append(" public static final String CASO_USO = Consulta"+casoUso+"Action.class.getSimpleName() + \".do\";");sb.append("\n");sb.append("\n"); sb.append(" public static final String ACAO_EXIBIR = CASO_USO + \"?\" + ControladorGcomAction.PARAMETRO_ACAO + \"=\" + ControladorGcomAction.PARAMETRO_ACAO_EXIBIR;");sb.append("\n");sb.append("\n"); sb.append(" public static final String ACAO_PROCESSAR = CASO_USO + \"?\" + ControladorGcomAction.PARAMETRO_ACAO + \"=\" + ControladorGcomAction.PARAMETRO_ACAO_PROCESSAR;");sb.append("\n");sb.append("\n"); sb.append(" public Collection pesquisarObjetoSistema(Filtro filtro ) throws Exception{ ");sb.append("\n");sb.append("\n"); sb.append(" Filtro"+casoUso+" filtro"+casoUso+" = (Filtro"+casoUso+") filtro;");sb.append("\n");sb.append("\n"); sb.append(" Collection coll = Fachada.getInstancia().pesquisar"+casoUso+"(filtro"+casoUso+");");sb.append("\n");sb.append("\n"); sb.append(" return coll; ");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public void carregarColecao(ControladorConsultaGcomActionForm actionForm) { ");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public Filtro gerarFiltro(ControladorConsultaGcomActionForm actionForm) { ");sb.append("\n");sb.append("\n"); sb.append(" Consulta"+casoUso+"ActionForm form = (Consulta"+casoUso+"ActionForm) actionForm; ");sb.append("\n");sb.append("\n"); sb.append(" Filtro"+casoUso+" filtro"+casoUso+" = new Filtro"+casoUso+"();");sb.append("\n");sb.append("\n"); sb.append(" //Objetos que serão retornados pelo Hibernate através do clienteImovel ");sb.append("\n");sb.append("\n"); Iterator it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" if (form.get"+getPrimeiroMaiusculo(atributo)+"() != null && !\"\".equals(form.get"+getPrimeiroMaiusculo(atributo)+"())) {");sb.append("\n"); sb.append(" filtro"+casoUso+".adicionarParametro(new ParametroSimples(\""+atributo+"\", form.get"+getPrimeiroMaiusculo(atributo)+"())); ");sb.append("\n"); sb.append(" }");sb.append("\n"); } sb.append(" return filtro"+casoUso+";");sb.append("\n");sb.append("\n"); sb.append(" }");sb.append("\n");sb.append("\n"); sb.append("}");sb.append("\n");sb.append("\n"); System.out.print(sb.toString()); return sb; } public StringBuffer consultaActionForm(Collection atributos, String casoUso) throws IOException { StringBuffer sb = new StringBuffer(); sb.append("package gcom.gui.cadastro.tarifasocial;");sb.append("\n");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomActionForm;");sb.append("\n");sb.append("\n"); sb.append("import javax.servlet.http.HttpServletRequest;");sb.append("\n");sb.append("\n"); sb.append("import org.apache.struts.action.ActionMapping;");sb.append("\n");sb.append("\n"); sb.append("public class Consulta" + casoUso + "ActionForm extends ControladorConsultaGcomActionForm {");sb.append("\n"); Iterator it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" private String " + atributo + ";");sb.append("\n"); } sb.append("\n"); it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" public String get"+getPrimeiroMaiusculo(atributo)+"() {");sb.append("\n"); sb.append(" return "+atributo+";");sb.append("\n"); sb.append(" }");sb.append("\n"); sb.append(" public void set"+getPrimeiroMaiusculo(atributo)+"(String "+atributo+") {");sb.append("\n"); sb.append(" this."+atributo+" = "+atributo+";");sb.append("\n"); sb.append(" }");sb.append("\n"); sb.append(" ");sb.append("\n"); } sb.append(" public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {");sb.append("\n"); it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" this." + atributo + " = \"\";");sb.append("\n"); } sb.append(" }");sb.append("\n"); sb.append("}");sb.append("\n"); System.out.print(sb.toString()); return sb; } public StringBuffer atualizarAction(Collection atributos, String casoUso) throws IOException { StringBuffer sb = new StringBuffer(); sb.append("package gcom.gui.cadastro.tarifasocial;");sb.append("\n");sb.append("\n"); sb.append("import gcom.cadastro.cliente.FiltroClienteImovel;");sb.append("\n"); sb.append("import gcom.fachada.Fachada;");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomAction;");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomActionForm;");sb.append("\n"); sb.append("import gcom.gui.ControladorGcomAction;");sb.append("\n"); sb.append("import gcom.gui.ControladorGcomActionForm;");sb.append("\n"); sb.append("import gcom.util.filtro.Filtro;");sb.append("\n"); sb.append("import gcom.util.filtro.ParametroSimples;");sb.append("\n");sb.append("\n"); sb.append("import java.util.Collection;");sb.append("\n");sb.append("\n"); sb.append("public class Atualizar"+casoUso+"Action extends ControladorAlteracaoGcomAction {");sb.append("\n");sb.append("\n"); sb.append(" public static final String CASO_USO = Atualizar"+casoUso+"Action.class.getSimpleName() + \".do\";");sb.append("\n");sb.append("\n"); sb.append(" public static final String ACAO_EXIBIR = CASO_USO + \"?\" + ControladorGcomAction.PARAMETRO_ACAO + \"=\" + ControladorGcomAction.PARAMETRO_ACAO_EXIBIR;");sb.append("\n");sb.append("\n"); sb.append(" public static final String ACAO_PROCESSAR = CASO_USO + \"?\" + ControladorGcomAction.PARAMETRO_ACAO + \"=\" + ControladorGcomAction.PARAMETRO_ACAO_PROCESSAR;");sb.append("\n");sb.append("\n"); sb.append(" public void atualizarObjeto(Object obj, HttpServletRequest request, ControladorAlteracaoGcomActionForm actionForm) throws Exception { ");sb.append("\n");sb.append("\n"); sb.append(" Atualizar"+casoUso+"ActionForm form = (Atualizar"+casoUso+"ActionForm) actionForm;");sb.append("\n");sb.append("\n"); sb.append(" " + casoUso + " objeto = (" + casoUso + ") obj;");sb.append("\n");sb.append("\n"); sb.append(" Fachada.getInstancia().atualizar" + casoUso + "(objeto);");sb.append("\n");sb.append("\n"); //sb.append(" return coll; ");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public Object consultarObjetoSistema(String[] chavesPrimarias, HttpServletRequest request, ControladorAlteracaoGcomActionForm actionForm) throws Exception { ");sb.append("\n");sb.append("\n"); sb.append(" Atualizar"+casoUso+"ActionForm form = (Atualizar"+casoUso+"ActionForm) actionForm;");sb.append("\n");sb.append("\n"); sb.append(" Filtro" + casoUso + " filtro = new Filtro" + casoUso + "()");sb.append("\n");sb.append("\n"); sb.append(" // criar os filtros a partir da chave primaria ");sb.append("\n");sb.append("\n"); sb.append(" " + casoUso + " objeto = Fachada.getInstancia().consultar" + casoUso + "(objeto);");sb.append("\n");sb.append("\n"); //sb.append(" return coll; ");sb.append("\n");sb.append("\n"); sb.append(" return objeto; ");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public void carregarColecao(ControladorConsultaGcomActionForm actionForm) { ");sb.append("\n");sb.append("\n"); sb.append(" Atualizar"+casoUso+"ActionForm form = (Atualizar"+casoUso+"ActionForm) actionForm;");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public Object gerarObject(ControladorAlteracaoGcomActionForm actionForm, HttpServletRequest request) { ");sb.append("\n");sb.append("\n"); sb.append(" Atualizar"+casoUso+"ActionForm form = (Atualizar"+casoUso+"ActionForm) actionForm;");sb.append("\n");sb.append("\n"); sb.append(" " + casoUso + " obj = new " + casoUso + "();");sb.append("\n");sb.append("\n"); Iterator it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" if (!\"\".equals(form.get"+getPrimeiroMaiusculo(atributo)+"())) "); sb.append("\n"); sb.append(" obj.set"+getPrimeiroMaiusculo(atributo)+"(form.get"+getPrimeiroMaiusculo(atributo)+"()); "); sb.append("\n"); sb.append("\n"); } sb.append("return obj;");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" public void montarFormulario(Object obj, ControladorAlteracaoGcomActionForm actionForm) { ");sb.append("\n");sb.append("\n"); sb.append(" Atualizar"+casoUso+"ActionForm form = (Atualizar"+casoUso+"ActionForm) actionForm;");sb.append("\n");sb.append("\n"); sb.append(" if (obj instanceof "+casoUso+") { ");sb.append("\n");sb.append("\n"); sb.append(" "+casoUso+" vo = ("+casoUso+") obj; ");sb.append("\n");sb.append("\n"); it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" if (vo.get"+getPrimeiroMaiusculo(atributo)+"() != null) "); sb.append("\n"); sb.append(" form.set"+getPrimeiroMaiusculo(atributo)+"(vo.get"+getPrimeiroMaiusculo(atributo)+"() + \"\");"); sb.append("\n"); sb.append("\n"); } sb.append("//return obj;"); sb.append(" } ");sb.append("\n");sb.append("\n"); sb.append(" } ");sb.append("\n");sb.append("\n"); System.out.print(sb.toString()); return sb; } public StringBuffer atualizarActionForm(Collection atributos, String casoUso) throws IOException { StringBuffer sb = new StringBuffer(); sb.append("package gcom.gui.cadastro.tarifasocial;");sb.append("\n");sb.append("\n"); sb.append("import gcom.gui.ControladorConsultaGcomActionForm;");sb.append("\n");sb.append("\n"); sb.append("import javax.servlet.http.HttpServletRequest;");sb.append("\n");sb.append("\n"); sb.append("import org.apache.struts.action.ActionMapping;");sb.append("\n");sb.append("\n"); sb.append("public class Atualizar" + casoUso + "ActionForm extends ControladorConsultaGcomActionForm {");sb.append("\n"); Iterator it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" private String " + atributo + ";");sb.append("\n"); } sb.append("\n"); it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" public String get"+getPrimeiroMaiusculo(atributo)+"() {");sb.append("\n"); sb.append(" return "+atributo+";");sb.append("\n"); sb.append(" }");sb.append("\n"); sb.append(" public void set"+getPrimeiroMaiusculo(atributo)+"(String "+atributo+") {");sb.append("\n"); sb.append(" this."+atributo+" = "+atributo+";");sb.append("\n"); sb.append(" }");sb.append("\n"); sb.append(" ");sb.append("\n"); } sb.append(" public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {");sb.append("\n"); it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" this." + atributo + " = \"\";");sb.append("\n"); } sb.append(" }");sb.append("\n"); sb.append("}");sb.append("\n"); System.out.print(sb.toString()); return sb; } public StringBuffer consultajsp(Collection atributos, String casoUso) throws IOException { StringBuffer sb = new StringBuffer(); Iterator it = atributos.iterator(); while (it.hasNext()) { String atributo = it.next().toString(); sb.append(" ");sb.append("\n"); sb.append(" ");sb.append("\n"); sb.append(" ");sb.append("\n");sb.append("\n"); sb.append(" ");sb.append("\n"); sb.append(" ");sb.append("\n"); sb.append(" ");sb.append("\n"); } System.out.print(sb.toString()); return sb; } private String getPrimeiroMaiusculo(String atribuito) { String retorno = atribuito.substring(0,1).toUpperCase() + atribuito.substring(1,atribuito.length()); return retorno; } }