A ideia é colocar nessas entradas valores como o tipo dos elementos
HTML a serem processados (removidos/desabilitados), como H1, H2, DIV,
TABLE, etc. e controles de formularios, como SELECT, OPTION, INPUT,
etc.
O basico esta funcionado. Mas precisamos mais.
É importante ter uma flexibilidade para processar tags (na verdade,
segundo a W3C o nome nao é tag, e sim elemento!) html com base em seus
atributos. Por exemplo, desejamos bloquear todas os DIVs da pagina que
tenam o atributo "class" igual a "restringido", ou desabilitar todos
os controles de formulario que tenham o atributo "id" comecando por
"secure".
No cabecalho do arquivo magoo-rules.properties eu comecei a colocar
uma sintaxe para contemplar essas coisas...logo percebi que a coisa é
bem complexa, parecendo mais como uma expressao regular...
Dai, percebi (me lembrando das aulas do mestrado) de coisas como
XQuery e XPath, que sao coisas que permitem montar expressoes de busca
(acho que é isso) em arquivos XML. Ora, o HTML é um arquivo XML de
certa forma e poderia ser valido tambem essas tecnologias...
----
O IMPORTANTE é que eu imagino que o Magoo deve ser "adimensional" (sei
la a palavra certa) em relacao a isso. Ou seja, é importante deixar
que o usuario (entenda-se como desenvolvedor) escolha a melhor forma
de escolher os elementos que ele deseja restringir.
Em palavras mais simples, eu imagino que deveria existir uma fabrica
(Factory) que o desenvolvedor utilizaria para inicializar um objeto de
excucao de regras de permissoes. Essa fabrica retornaria uma instancia
de um objeto como IMagooRules (que poderia ser um Command) com um
metodo execute(), onde dentro dele esse proprio command se
encarregaria de buscar e processar os objetos da pagina da forma que
quisesse.
Assim, o Magoo poderia disponibilizar uns Commands simples (como esse
baseado no aruquivo magoo-rules.properties) e outros mais avancados,
como os baseados em XQuery, etc...
Da mesma forma, ficaria aberto para o desenvovledor final criar
Commands seus, que pudessem buscar elementos da forma que quisesse....
A passagem de parametros para esse Command (como o contexto do
servlet, o response, o request, etc...) poderia ser feita na chamada
da Factory, por exemplo. E, para evitar problemas, esses parametros
poderiam ser encapsulados em um objeto maior (como um Hash), de forma
que, caso mais parametros (ainda nao previstos) sejam necessarios para
um Command novo, tudo estaria encapsulado nesse objeto maior...
Sao ideias preliminares.