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(" <logic:present name=\""+atributo+"\" scope=\"request\">");sb.append("\n");
sb.append(" <input type=\"text\" name=\""+atributo+"\" />");sb.append("\n");
sb.append(" </logic:present>");sb.append("\n");sb.append("\n");
sb.append(" <logic:notPresent name=\""+atributo+"\" scope=\"request\">");sb.append("\n");
sb.append(" <html:text property=\""+atributo+"\" name=\"Consulta" + casoUso + "ActionForm\"/>");sb.append("\n");
sb.append(" </logic:notPresent> ");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;
}
}