Por favor, coloque as suas dúvidas e seus comentários sobre este tutorial aqui.
Sinta-se livre para fazer qualquer tipo de pergunta, desta maneira você estará nos ajudando e aos outros usuários!
Alguém acha que a classe Properties poderia substituir um arquivo de configuração XML?
Deixe-me explicar: para evitar ifs no meu programa penso em “parsear” um arquivo XML mais ou menos assim:
<request name=“Teste”>
<pagina value = “test.jsp”/>
<metodo value = “getValue();”/>
<parametro value = “teste”/>
<mensagem value = “olá”/>
</request>
<request name=“Teste1”>
<pagina value = “test1.jsp”/>
<metodo value = “getValueNovo();”/>
<parametro value = “teste1”/>
<mensagem value = “olá de novo”/>
</request>
Busco as informações “nodes” de acordo com o name do request.
Pensei em utilizar a classe Properties para fazer isso já que ela trabalha com propriedade = valor… entretanto, não achei forma de trabalhar com valores diferentes no mesmo arquivo.
O que acha?[/quote]
Realmente voce nao pode ter duas chaves iguais no mesmo arquivo.
A unica saida nesse caso seria voce ter arquivos separados, para cada tipo de caso que fosse necessario.
Surgiu a necessidade de carregar apenas determinados properties de um arquivo, de acordo com um parametro passado.
Imagine o seguinte arquivo .properties:
mysql.username=abc
mysql.password=123
oracle.username=def
oracle.password=456
Quando vou carregar o arquivo .properties, gostaria de passar como parametro mysql ou oracle e de acordo com esse parametro, carregar username e password corretamente.
Dei uma olhada no fonte da classe Properties e vi que seria bem simples para extender a classe e implementar, o problema é que alguns atributos do método load() são private, então minha classe não consegue enxerga-los.
Há como contornar o problema? O que sugerem como work-around?
Estenda, faca override do load() e manipule o retorno dele… algo como
public class MyProperties extends Properties
{
public void load(....)
{
super.load(....);
// Agora vc varre todas as propriedades
// e deixa somente as desejadas
}
}
Se quiser, ainda pode fazer overload do getProperty() e afins, caso use uma outra forma de armazenamento dos dados ( ao inves de chamar super.getProperty, por exemplo, ou se preferir guardar em um outro hashmap ao inves de usar o da classe pai ).