| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2006 13:18:11
|
Ironlynx
Joined: 28/10/2005 17:35:38
Messages: 328
Offline
|
Opa pessoal!!!Tô fazendo meu primeiro "Menta Projeto" para produção, e estou meio perdido em algumas coisas(excesso de features é fda...)...
Basicamente é um cadastro de sinistros(seguros) onde há uma página de entrada(home com o login), e depois só páginas visíveis aos logados.Meu pool é o C3P0 usando o MySQL de BD. Numa aplicação normal, eu usaria um Filter que fica verificando se o Usuario existe e está na sessão ou não e levaria para um controlador(com uma hashmap de ações a serem executados). Meu AppManager tah + ou - assim:
public class ApplicationManager extends org.mentawai.core.ApplicationManager {
private Component usuarioDAO;
private ConnectionHandler connHandler;
public void init(Context application){
this.usuarioDAO = new DefaultComponent(MySQLUsuarioDAO.class);
//ConnectionPool
this.connHandler = new C3P0ConnectionHandler("com.mysql.jdbc.Driver",
"jdbc:mysql://ageris?autoReconnect=true",
"root",
"");
C3P0ConnectionHandler c3p0 = (C3P0ConnectionHandler) connHandler;
ComboPooledDataSource pool = (ComboPooledDataSource) c3p0.getComboPooledDataSource();
pool.setMaxIdleTime(3600);
}
public void loadActions() {
//LoginAction
addGlobalFilter(new AuthenticationFilter());
addGlobalConsequence(AuthenticationFilter.LOGIN, new Redirect("/index.jsp"));
ActionConfig ac = new ActionConfig("Login", LoginAction.class);
ac.addConsequence(LoginAction.SUCCESS, new Redirect("/start.jsp"));
ac.addConsequence(LoginAction.ERROR, new Forward("/index.jsp"));
addActionConfig(ac);
}
}
E a minha pergunta é:
Toda a ação do meu sistema(Ex.: "cadastrar sinistro", "deletar sinistro","exibir sinistro" ) TEM que ser mapeada como ActionConfig que corresponderia ao meu "HashMap" de controle?
|
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2006 13:22:11
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Sim. Veja o exemplo do mybooks. http://www.mentaframework.org/mybooks.jsp
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/03/2006 14:25:57
|
Ironlynx
Joined: 28/10/2005 17:35:38
Messages: 328
Offline
|
Sim. Veja o exemplo do mybooks.
Opa!Baixei ele e estou vendo aqui... algumas coisas ficaram um pouco turvas aqui...(Lembre-se que eu não tenho muita experiência web, e o mundo Swing é beeem diferente desse!)Por exemplo esse comando de inserção normalmente eu faria + ou - assim(chamando ele de dentro do Controlador):
Code:
public class ComandoInserirSinistro implements Comando {
private String proxima;
private MySQLSinistroDAO mssd=new MySQLSinistroDAO();
public ComandoInserirSinistro(String inserir){
this.proxima=inserir;
}
public String executar(HttpServletRequest req) throws ExcecaoComando {
try{
Sinistro sb= new Sinistro();
sb.setId_empresa(Integer.parseInt(req.getParameter("empresa")));
sb.setId_tiposeg(Integer.parseInt(req.getParameter("tipoDeSeguro")));
sb.setData_inicio(req.getParameter("dataInicio"));
sb.setId_bem(Integer.parseInt(req.getParameter("id_bem")));
sb.setId_potencia(Integer.parseInt(req.getParameter("id_potencia")));
sb.setId_tensao(Integer.parseInt(req.getParameter("id_tensao")));
sb.setId_causa(Integer.parseInt(req.getParameter("id_causa")));
sb.setPrejuizo(new BigDecimal(req.getParameter("prejuizo")));
sb.setFranquia(new BigDecimal(req.getParameter("franquia")));
sb.setIndenizacao(new BigDecimal(req.getParameter("indenizacao")));
sb.setSegurado(Integer.parseInt(req.getParameter("segurado")));
req.setAttribute("sinistro",sb);
if(ComandoToken.isValido(req)){
mssd.inserirSinistro(sb);
req.setAttribute("sinistro.msg","Informações Cadastradas");
}
else
{ req.setAttribute("sinistro.msg","Informações Cadastradas: "
+ "(Envie o pedido de cadastramento do sinistro uma única vez)");
}
return proxima;
}
catch(Exception e){
throw new ExcecaoComando("ComandoInserirSinistro: "+ e.getMessage());
}
}
}
"Mentalizando a coisa", como vc faria?Vc faria um InserirSinistroAction e dentro do execute pegava os parâmetros ou faria um Validador que a validasse e chamasse uma Action de para a inserção???
OBS.: acho que só botar uma simples tag:
<mtw:requiresAuthentication />
para bloquear os usuários indevidos simples e genial.Poupa aquele trabalho nojento de mexer no XML e fazer um filtro enjoado.
|
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/03/2006 21:23:42
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Uma coisa é validação outra coisa é a action.
O jeito mais certinho é fazer um model que inseri isso no banco, usando ou não usando DAO.
A action é apenas uma ponte entre a requisição web e os seu modelo de negócios. Esse sim vai usar um DAO ou qualquer outra coisa para inserir no banco.
Nada te impede de meter a lógica na action, mas alguns mais puritanos vão falar que isso é feio.
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2006 01:21:59
|
Ironlynx
Joined: 28/10/2005 17:35:38
Messages: 328
Offline
|
A action é apenas uma ponte entre a requisição web e os seu modelo de negócios.
Opa, isso eu saquei... foi mal eu me expressei mal mesmo(Vc entendeu como arquitetura!).O que eu quero saber se é mandatário eu ter que usar as input tags para mapear(jogar os dados e recuperar) para o banco, ou eu posso fazer as chamadas (pegar os params via getParameter()) na action e tacar para o model(hummm eu perderia o request não?).
Sérgio, os exemplos são show de bola, mas falta um que seja aquele CRUD clássico só de jdbc para quem tá começando(no mybooks vc já usa Ioc e Injeção de dependências, imagino o coitado que nem sabe o que é composição). Humm, se eu botar esse protótipo do projeto que eu tô fazendo no ar logo, eu posso fazer um!
|
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2006 10:25:50
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Tem razão !!!
No seu model vc não deve precisar do request ou do input. Seu model não tem que saber de mais nada. Ele apenas precisa dos dados e da lógica do negócio dentro dele.
Então há várias opções aqui:
- action pega os parametros do input e passar para o model
- action implementa model-driven e tudo que é injetado na action já vai direto para o model (mybooks)
Essa sua idéia de um crud básico não é ruim não !!!
|
Sergio Oliveira
|
|
|
 |
|
|