| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 11:47:44
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Olá a todos amigos do forum. Estou definindo padrões para o desenvolvimento de um software que será migrado de Delphi para Java. No sistema em Delphi as permissões dos usuários são definidas no campos de um formulário, por exemplo, num sistema de consulta de clientes, eu posso definir quais campos um vendedor pode ver, quais um gerente pode ver, etc. No sistema em Java deverá possuir a mesma funcionalidade, ai é que está o problema, se eu, no momento de criar a interface gráfica, verificar componente por componente se o usuário ter permissão de vê-lo ou não acho que o sistema não terá boa performance.
Vocês tem alguma sugestão do que pode ser feito para fazer estas verificações de permissão mantendo a boa performance do sistema?
Muito obrigado a todos e um feliz ano novo.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 13:01:07
|
keller
GUJ Master
![[Avatar]](/images/avatar/f410588e48dc83f2822a880a68f78923.jpg)
Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline
|
Pode dar mais um detalhe , é separado por componentes ou por campos ?
Por exemplo você pode fazer um JPanel com dados pra exibir no caso
de ser o gerente , senao apenas mostra os campos em comum..
Você vai ter que construir um "mini-framework" pra fazer isso e o pessoal
utilizar , nao é tao complicado tendo um bom conhecimento e sabendo
o que realmente deve ser feito..
Agora se o sistema for controlado "campo a campo" acho que optar
por uma solucao web é um caso a ser analisado , há muitos frameworks
que oferecem isso pra você prontinho , ( aka , mentawai , jsf , etc..)
Bom nada que um bom papo nao resolva qualquer duvida posta ae..
Boa sorte!
|
Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 13:12:13
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Não há como fazer em ambiente Web, o sistema é Desktop.
Sim, as permissões são definidas por campo (nome, endereço, etc.). É isto que está complicando (verificar campo por campo de maneira eficiente).
Fale um pouco mais sobre esta idéia do framework? Alguma idéia de como ele pode funcionar?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 13:42:34
|
#rodrigo#
JavaChild
![[Avatar]](/images/avatar/ab00b14a2da2e3cdcc44f06265db6574.jpg)
Membro desde: 17/08/2005 14:40:22
Mensagens: 103
Offline
|
dá uma olhada neste link, .... quem sabe pode te ajudar em alguma coisa ...
http://java.sun.com/javase/6/docs/technotes/guides/security/jaas/tutorials/index.html
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 13:46:05
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Obrigado, vou dar uma olhada aqui sim.
Não sabia que era possível utilizar JAAS sem um servidor de aplicações.
Vou ver se com JAAS é possível fazer o que desejo.
Qualquer dúvida pergunto aqui.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2006 17:02:19
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Alguém tem mais alguma sugestão de como posso resolver o problema?
Idéias são sempre bem vindas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2006 03:50:18
|
Sombriks
Java Ninja
![[Avatar]](/images/avatar/65b0df23fd2d449ae1e4b2d27151d73b.jpg)
Membro desde: 14/04/2005 16:36:03
Mensagens: 250
Localização: Fortaleza, CE
Offline
|
rapaz, perto do que eu estou para usar, seu problema pode ser na realidade uma solução, uma vez q eu vou ter que ver a mesma coisa.
por exemplo, se vc quiser fazer o componente literalmente desaparecer da tela se o usuário não puder mexer naquilo, é recomendável pensar na reestruturação de leiaute, etc. Mas se deixar disabled for opção, uma classe abstrata que 1- tenha uma implementação genérica de campos ou 2- obrigue cada janela a possuir uma certa implementação pode ser útil.
No meu caso, cada usuário tem uma "chave de acesso" (eh um número) e dependendo deste valor certas telas podem ou não serem vistas. mas aí se vc quiser alterações dinâmicas nos forms, bom, a coisa muda um pouco. nesse caso não somente as janelas, mas sim cada campinho, ao ser criado tem que ter uma "contra-chave" pra vc verificar se pode ou não isso ou aquilo.
no meu decidi pela simplicidade e estou usando números primos para definir os níveis de acesso. se, por exemplo, um usuário puder ter aceso a dois níveis distintos de segurança a chave deste cidadão é a multiplicação dos dois primos que representam tal funcionalidade.
se servir pra mim certamente postarei as dificuldades e alegrias de uso, blza?
boa sorte ae.
|
Linux user #391803.
http://counter.li.org/
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 19:50:43
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Eu optei pelo desenvolvimento de um pequeno Framework, visto que ele poderá ser facilmente utilizado, posteriormente, em outros projetos, sem contar que posso disponibilizá-lo como software livre.
Estou seguindo a seguinte idéia: tenho uma classe que herda JFrame e esta possui um método que verifica os componentes anotados para efetuar a validação. O problema que estou enfrentando parece ser simples, mas num pensei em nenhuma solução eficiente, somente em uma básica.
Ao buscar o Field, via reflection, eu preciso convertê-lo para sua classe padrão para definir suas propriedades, como posso fazer isto de maneira performática?
Eu fiz da seguinte forma:
Porém esta não me parece ser a melhor maneira. Alguém possui alguma sugestão de uma maneira mais eficiente para implementar o código?
Obrigado a todos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 20:40:44
|
keller
GUJ Master
![[Avatar]](/images/avatar/f410588e48dc83f2822a880a68f78923.jpg)
Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline
|
Opa , esta surgindo uma solucao!
Pense em classes "Abstratas" e "Implementacoes" feitas
por você do JTextField da JTextArea e assim por diante..
Boa sorte!
|
Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 20:46:20
|
RicardoLuis
JavaEvangelist
Membro desde: 12/08/2003 14:47:56
Mensagens: 393
Localização: Cuiabá / MT
Offline
|
Com isto poderia tornar o código mais eficiente? Me desculpe, mas não conseguir ver aonde você deseja chegar.
Poderia me dar mais alguns detalhes?
Para verificar as permissões do usuário, estarei fazendo, na minha classe que herda JFrame, um método abstrato que passa o nome do componente, ai nos meus formulários estará a implementação, visto que os objetos que armazenam as permissões somente estarão disponíveis lá. O que acha da solução? Alguma forma de melhorá-la?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 21:09:43
|
bernardo.rafael
Debugger
![[Avatar]](/images/avatar/8af141d3c5a5146a3eac9d166ab4c458.jpg)
Membro desde: 02/06/2006 08:03:51
Mensagens: 66
Offline
|
Ricardo, vc pode usar uma fábrica de formulários.
Com essa fábrica, vc vai criar um layout para cada nível de usuáro de seu sistema.
Esse tutorial explica o uso de alguns design patterns, entre eles o Factory Method (que eu acredito que vá solucionar o seu problema)
http://www.guj.com.br/java.tutorial.artigo.137.1.guj
|
-------------------------------------------
Abraços.
Rafael Bernardo |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 21:24:10
|
keller
GUJ Master
![[Avatar]](/images/avatar/f410588e48dc83f2822a880a68f78923.jpg)
Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline
|
RicardoLuis wrote:Com isto poderia tornar o código mais eficiente? Me desculpe, mas não conseguir ver aonde você deseja chegar.
Poderia me dar mais alguns detalhes?
Uhmn , estou apenas dando a ideia de você criar seus proprios componentes
assim você pode agregar novas funcionalidades a eles nao tendo que usar
JTextField aqui e GujTextField ali.. sacou ?
RicardoLuis wrote:
Para verificar as permissões do usuário, estarei fazendo, na minha classe que herda JFrame, um método abstrato que passa o nome do componente, ai nos meus formulários estará a implementação, visto que os objetos que armazenam as permissões somente estarão disponíveis lá. O que acha da solução? Alguma forma de melhorá-la?
Boa solução! Pode ser que exista alguma melhor , pode ser que não.
Bom tambem aceite a sugestao do Bernardo Rafael e de uma olhada
nos padrões de projeto que ele indicou quem sabe nao esta em algum
deles uma solucao talvez mais simples pro seu problema ?
Bernardo Rafael poderia dar uma breve explicada como poderia ser
utilizado estes padrões sugeridos para solucionar o problema?
Boa Sorte!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 21:32:44
|
bernardo.rafael
Debugger
![[Avatar]](/images/avatar/8af141d3c5a5146a3eac9d166ab4c458.jpg)
Membro desde: 02/06/2006 08:03:51
Mensagens: 66
Offline
|
Na verdade, fazer a sua classe extender o JFrame não é uma boa...
Fazendo isso fará com que seu sistema fique dependente do JFrame e, se em algum momento vc desistir de usar swing para usar awt será um um parto.
O melhor mesmo é vc criar uma classe que monte a toda a tela e a mostre para o usuário.
Assim, se vc quiser mudar a API gráfica de seu sistema, ficará mais simples.
|
-------------------------------------------
Abraços.
Rafael Bernardo |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 21:39:07
|
keller
GUJ Master
![[Avatar]](/images/avatar/f410588e48dc83f2822a880a68f78923.jpg)
Membro desde: 12/11/2003 16:24:00
Mensagens: 1817
Localização: Auckland - NZ
Offline
|
Olá,
Que tal em vez de usar classes abstratas para "obrigar"
a implementacao de um metodo porque nao utiliza uma
interface ? É uma saida muito mais elegante.
Boa Sorte!
|
Guilherme I. Keller (Gui)
Diploma in Web Development and Desktop Publishing
SCJA | SCJP | SCWCD | SCBCD | CSM
"Test it, before it test you."
http://flickr.com/guikeller |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2007 21:49:44
|
bernardo.rafael
Debugger
![[Avatar]](/images/avatar/8af141d3c5a5146a3eac9d166ab4c458.jpg)
Membro desde: 02/06/2006 08:03:51
Mensagens: 66
Offline
|
Um exemplo de uso do Factory Method:
- uma classe abstrata que serviria de base para as outras classes, no caso de uma janela, teriamos uma classe com o nome de 'JanelaBase.java'
- após isso, vc pode gerar quantas classes filhas de 'JabelaBase' quiser, por exemplo:
1º - JanelaVendedor
2º - JanelaGerente
- a partir deste momento, vc já pode começar a fabricar as suas janelas:
JanelaFactory
* aqui, é necessário tomar cuidado de mandar um tipo que possa ser fabricado, ou criar um tipo default para quando o tipo de Janela não for especificado corretamente.
espero que ajude.
|
-------------------------------------------
Abraços.
Rafael Bernardo |
|
|
 |
|
|