Swing e Camadas...  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
paulohbmetal
GUJ Ranger
[Avatar]

Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline

E aí galera, blz? Sei que que a questão de desenvolvimento em camadas já foi muito discutido aqui, mas preciso tirar umas dúvidas a respeito do desenvolvimento em camadas com Swing.

Bom em minha aplicação existe a camada de Interface(view) com JFrames, JInternalFrames e tal, em minha camada de lógica de negócios eu tenho o objeto para validação e e tenho meu DAO.

- Queria saber quais são as validações que vcs fazem na camada de negócios?

- Onde vcs validam, por exemplo, se um campo campo foi digitado corretamente?Se for na lógica de negócios, como vcs fazem com o focu?(dar um requestFocus() no campo que que foi digitado errado e etc).



Bom, por enquanto vou fazer "somente" estas perguntas.

Espero estar sendo claro.Já agradeço desde já...

A Paz!!

Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!"
[Email] [WWW]
isneiqui
Thread.start()
[Avatar]

Membro desde: 22/04/2004 17:50:44
Mensagens: 38
Localização: São Paulo/SP
Offline

paulohbmetal wrote:Onde vcs validam, por exemplo, se um campo campo foi digitado corretamente?Se for na lógica de negócios, como vcs fazem com o focu?(dar um requestFocus() no campo que que foi digitado errado e etc).

uma forma para se fazer isso é: quando for pra validar o CONTEÚDO vc valida na lógica de negócio (na camada de Controle). Quando for pra validar a FORMA vc valida na view.
Os erros de conteúdo validados no Controle podem lançar exceções, que são capturadas na view e inclusive assim vc tem a mensagem de erro para exibir e controla o foco o que quiser daí...

[]´s

MS IE User: BrainNotFoundException.
[MSN] [ICQ]
paulohbmetal
GUJ Ranger
[Avatar]

Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline

Os erros de conteúdo validados no Controle podem lançar exceções, que são capturadas na view e inclusive assim vc tem a mensagem de erro para exibir e controla o foco o que quiser daí...


Eu já tinha pensado nisso... Mas, por exemplo um formulário muito extenso, vou ter que criar uma exceção por campo validado?Por exemplo uma grid de proprieades, cada linha tem uma informação diferente e tal...Pois se eu criar uma genérica, não vou poder identificar o campo.


A Paz!!

Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!"
[Email] [WWW]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

paulohbmetal wrote:
Eu já tinha pensado nisso... Mas, por exemplo um formulário muito extenso, vou ter que criar uma exceção por campo validado?


Você pode usar um conjunto pequeno de exceções e fazê-las trazer algum jeito de identificar o componente. Nada que rpenda sua regra de negócios à view, mas algo que a view saiba onde o erro ocorreu. Por exemplo, um ValorNaoPermitidoException com um atributo valorProblematico, que dê a dica de em qual lugar jogar teu focus.

99% você não repcisa fazer nada com uma exceção a não ser extends, mas as vezes pode ser útil...

[]s

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
paulohbmetal
GUJ Ranger
[Avatar]

Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline

pcalcado wrote:
paulohbmetal wrote:
Eu já tinha pensado nisso... Mas, por exemplo um formulário muito extenso, vou ter que criar uma exceção por campo validado?


Você pode usar um conjunto pequeno de exceções e fazê-las trazer algum jeito de identificar o componente. Nada que rpenda sua regra de negócios à view, mas algo que a view saiba onde o erro ocorreu. Por exemplo, um ValorNaoPermitidoException com um atributo valorProblematico, que dê a dica de em qual lugar jogar teu focus.

99% você não repcisa fazer nada com uma exceção a não ser extends, mas as vezes pode ser útil...

[]s


É, mas ainda fica esquisito...Mas, vc já viu/desenvolveu/tem exemplo sei lá de, alguma coisa parecida com isso?O phoda, é não prender o Business a View...E...Me parece que estou precisando de um pattern... Existem vários patterns, mas na maioria dos exemplos voltados para Web, e não tem(eu acho) esse tipo de preocupação...


A Paz!!

Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!"
[Email] [WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

paulohbmetal wrote:- Onde vcs validam, por exemplo, se um campo campo foi digitado corretamente?


O uso de swing tem enormes vantagens sobre a pobre interface html + javascript. Uma delas é a validação dos campos que pode ser feita na própria interface. Há 2 modos e os dois podem ser usados juntos, balanceando de acordo com os requisitos da interface:
  • - Validar logo no componente que lê o campo. Coisas do tipo não aceita vazio, string no lugar de data, etc.
    - Validar todo o form em conjunto. Neste caso é preciso usar o pattern observer/observable para antes de enviar os campos do form para o servidor se faça uma consistência completa.
  • Não há necessidade de enviar lixo para o servidor. As exceções e os logs você joga para um arquivo no cliente e depois, um dia talvez, você faz upload deste arquivo para o servidor (identificando o cliente).

    []s
    Luca

    Dare Obasanjo (Program Manager at Microsoft)
    "The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


    CEP, JMS, JMX e coisas afins (ou não)
    http://lucabastos.blogspot.com/
    [Email] [WWW]
    pcalcado
    Moderador
    [Avatar]

    Membro desde: 08/03/2004 17:19:35
    Mensagens: 5174
    Localização: Sydney - Australia
    Offline

    paulohbmetal wrote:
    É, mas ainda fica esquisito...Mas, vc já viu/desenvolveu/tem exemplo sei lá de, alguma coisa parecida com isso?O phoda, é não prender o Business a View...E...Me parece que estou precisando de um pattern... Existem vários patterns, mas na maioria dos exemplos voltados para Web, e não tem(eu acho) esse tipo de preocupação...


    Usandod este jeito, seu modleo não sabe sobre a View. Ele apenas diz que o valor X é ilegal, a view que se dane pra dar focus onde for [as camadas só se conhecem em um sentido].

    O meio 'padrão' é passar exceções, você pode diminuir a granularidade da sua verificação, mas isso pode ser muito ruim, principalmente em ambientes distribuidos.

    Mas não vejo o problema tão grande... se eu paso um bean pra minha regra de negócios e ela retorna uma ValorNaoPermitidoExceptiond a vida, ela precisa me dizer qual. Em um ambiente web eu posso, em alguns casos, pegar a msg e jogar pro usuário ver ['CEP tem qeu ter x caracteres', etc.], você vai ter que dar um jeito da exceção te dizer isso e você pegar no swing. Uma campo 'nome' é melhor de identificar que parsear uma msg da exceção...

    []s

    Phillip Calçado "Shoes"
    http://fragmental.tw/
    http://blog.fragmental.com.br/
    "It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
    [Email] [WWW] [Yahoo!] [MSN]
    paulohbmetal
    GUJ Ranger
    [Avatar]

    Membro desde: 28/08/2003 18:19:45
    Mensagens: 760
    Localização: Goiânia - Goiás
    Offline

    Luca wrote:Olá

    paulohbmetal wrote:- Onde vcs validam, por exemplo, se um campo campo foi digitado corretamente?


    O uso de swing tem enormes vantagens sobre a pobre interface html + javascript. Uma delas é a validação dos campos que pode ser feita na própria interface. Há 2 modos e os dois podem ser usados juntos, balanceando de acordo com os requisitos da interface:
  • - Validar logo no componente que lê o campo. Coisas do tipo não aceita vazio, string no lugar de data, etc.
    - Validar todo o form em conjunto. Neste caso é preciso usar o pattern observer/observable para antes de enviar os campos do form para o servidor se faça uma consistência completa.
  • Não há necessidade de enviar lixo para o servidor. As exceções e os logs você joga para um arquivo no cliente e depois, um dia talvez, você faz upload deste arquivo para o servidor (identificando o cliente).

    []s
    Luca


    Luca, vc tem um exemplo do pattern observer/observable sendo usado neste tipo de caso(Swing, focus e tal)?

    A Paz!!

    Paulo Melo
    JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
    Sun Certified Java Programmer
    Bacharel em Ciência da Computação
    Especialista em Análise e Projetos de Sistemas de Informação
    ________________________________
    "Que a cruz sagrada seja minha luz!!"
    [Email] [WWW]
    Luca
    Moderador
    [Avatar]

    Membro desde: 06/09/2002 14:30:10
    Mensagens: 5810
    Localização: São Paulo/SP ou Paraty/RJ
    Offline

    Olá

    Paulo, infelizmente não posso passar nada porque o que tenho faz parte de uma aplicação complexa e eu precisaria retirar tudo o que não interessa para poder ter alguma serventia como exemplo.

    Na verdade tudo o que perguntou já tinha sido respondido pelo isneiqui. Eu e o Philip ficamos entrando em mais detalhes só para complementar. Agora é sua vez de por a mão na massa.

    Estude os observer/observable que existem na linguagem desde o Java 1.x. O seu uso permitirá que verifique todos os componentes de uma só vez. Em caso de sucesso passe para o próximo item da cadeia de responsabilidades que provavelmente envia os dados para o servidor. Em caso de falha jogue uma caixa de mensagem listando todos os erros e volte para a tela.

    []s
    Luca

    Dare Obasanjo (Program Manager at Microsoft)
    "The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


    CEP, JMS, JMX e coisas afins (ou não)
    http://lucabastos.blogspot.com/
    [Email] [WWW]
    paulohbmetal
    GUJ Ranger
    [Avatar]

    Membro desde: 28/08/2003 18:19:45
    Mensagens: 760
    Localização: Goiânia - Goiás
    Offline

    Blz, então...

    Valeu pelas dicas galera!!



    A Paz!!

    Paulo Melo
    JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
    Sun Certified Java Programmer
    Bacharel em Ciência da Computação
    Especialista em Análise e Projetos de Sistemas de Informação
    ________________________________
    "Que a cruz sagrada seja minha luz!!"
    [Email] [WWW]
    paulohbmetal
    GUJ Ranger
    [Avatar]

    Membro desde: 28/08/2003 18:19:45
    Mensagens: 760
    Localização: Goiânia - Goiás
    Offline

    Putz, tem um artigo explicando o uso do Observable aqui no GUJ:
    http://www.guj.com.br/user.article.get.chain?page=1&article.id=47



    A Paz!!
    Paulo Henrique

    Paulo Melo
    JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
    Sun Certified Java Programmer
    Bacharel em Ciência da Computação
    Especialista em Análise e Projetos de Sistemas de Informação
    ________________________________
    "Que a cruz sagrada seja minha luz!!"
    [Email] [WWW]
    Ironlynx
    Moderador
    [Avatar]

    Membro desde: 02/05/2003 01:06:41
    Mensagens: 3515
    Localização: The other side of the screen
    Offline

    Paulo,
    http://www.argonavis.com.br/cursos/java/j930/index.html
    baixe a apostila 3(Responsabilidades) que tb fala sobre o observer com um pouco de código também.

    Não basta persistir...tem que prevalecer!
    Ironlynx
    Anarquista de Sistemas
    http://osereojava.blogspot.com/
    [WWW]
    paulohbmetal
    GUJ Ranger
    [Avatar]

    Membro desde: 28/08/2003 18:19:45
    Mensagens: 760
    Localização: Goiânia - Goiás
    Offline

    Ironlynx wrote:Paulo,
    http://www.argonavis.com.br/cursos/java/j930/index.html
    baixe a apostila 3(Responsabilidades) que tb fala sobre o observer com um pouco de código também.



    Ou, valeu cara!!

    A Paz!!

    Paulo Melo
    JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
    Sun Certified Java Programmer
    Bacharel em Ciência da Computação
    Especialista em Análise e Projetos de Sistemas de Informação
    ________________________________
    "Que a cruz sagrada seja minha luz!!"
    [Email] [WWW]
    aspirante
    Entusiasta Java
    [Avatar]

    Membro desde: 17/08/2003 01:42:59
    Mensagens: 20
    Offline

    paulohbmetal wrote:
    Ironlynx wrote:Paulo,
    http://www.argonavis.com.br/cursos/java/j930/index.html
    baixe a apostila 3(Responsabilidades) que tb fala sobre o observer com um pouco de código também.



    Ou, valeu cara!!

    A Paz!!


    Nesta última edição da MundoJava, o Peter Jandi escreveu um artigo muito legal descrevendo os principais padrões de projetos em Java, vale dar uma conferida.

    Cya

    Dalton Camargo
    dalton(at)javafree.com.br
    www.javafree.org
    javaBB.org
    [MSN]
    gcobr
    JavaEvangelist
    [Avatar]

    Membro desde: 21/01/2004 16:55:29
    Mensagens: 305
    Localização: São Paulo/SP
    Offline

    Apenas quero comentar que:

    Na minha opinião, todas as pessoas que precisam de uma interface gráfica desktop deveriam considerar frameworks XUL como o Thinlet antes de tomar uma decisão final.

    Dependendo da aplicação, pode-se obter uma diferença de produtividade brutal (em comparação com o Swing) usando um framework como esse.

    Houve uma apresentação ótima sobre o assunto no JustJava, feita pelo Michael Santos: Simplicidade, Escalabilidade,Produtividade e Testabilidade com J2EE, AOP e Rich Clients.
    [Email] [MSN]
     
    Índice dos Fóruns » Arquitetura de Sistemas
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team