|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Apache Commons ConfigurationNeste tutorial vamos ensinar a utilizar uma API de Apache para gerenciar as configurações de suas aplicações de forma avançada. Eu trabalho em Autentia, em minha trajetória profissional ligada à informática vi como os programadores investiam grandes quantidades de tempo em reinventar a roda por desconhecimento de determinadas APIs.
Você alguma vez já implementou classes que gerenciavam diretamente dados de configuração? Existem várias formas padronizadas de gerenciar os dados de configuração de nossos componentes e aplicações:
Neste pequeno tutorial, vou nomear um API que a mim pessoalmente me parece de enorme utilidade e potência para o gerenciamento de dados de configuração. Trata-se de Apache Jakarta Commons Configuration. Apache Jakarta Commons Configuration é um subprojeto da série de projetos Apache Jakarta Commons. Commons Configuration é um conjunto de projetos que tentam padronizar as tarefas comuns que quase todas as aplicações e componentes realizam normalmente. Uma tarefa muito comum em qualquer aplicação é o gerenciamento de dados de configuração. É aqui onde entra em jogo Apache Jakarta Commons Configuration. Podemos obter tudo que for necessário através do seguinte endereço: http://jakarta.apache.org/commons/configuration/ Basicamente Apache Commons Configuration nos permite:
Alguns exemplos Antes de nada, desejo ressaltar que este tutorial é só uma introdução ao API, e que deve se documentar na Web oficial do API para ver todas as possibilidades que nos proporciona este API. Exemplo 1 Suponhamos que temos o seguinte arquivo de propriedades, no qual se definem dados de configuração relacionada com a interface gráfica da aplicação: app.windows.properties: mainmdi.title=Título de minha aplicação de prova mainmdi.width=800 mainmdi.height=600 mainmdi.state=maximized userform.title=Gestão de usuários userform.width=320 userform.height=200 userform.state=normal # Também seria válido: language=Castellano,English,French language=Castellano language=English language=French Pois através de Commons Configuration, poderíamos acessar às propriedades da seguinte forma: try { // Lemos os dados de configuração. O arquivo deve estar no mesmo diretório que a aplicação. PropertiesConfiguration config = new PropertiesConfiguration("app.windows.properties"); // A seguinte instrução se imprimirá: 800 System.out.println(config.getInt("main.mdi.width")); // A seguinte instrução se imprimirá: Minha aplicação de proba System.out.println(config.getString("main.mdi.title")); // A seguinte instrução imprimirá: Castellano System.out.println(config.getStringArray("language")[0]); // A seguinte instrução configura o objeto para que salve as propriedades // automaticamente em sua origem (Neste caso um arquivo) quando se atualizem // ou quando se agregem novas propriedades config.setAutoSave(true); // Adicionamos duas propriedades config.addProperty("version", "1.0"); config.addProperty("author", "Carlos García Pérez"); // Não faz falta graças a que está estabelecida a propriedade autoSave // config.save(); } catch (ConfigurationException ex){ System.out.println(ex); } Exemplo 2 Agora veremos as possibilidades deste API para tratar com propriedades Hierárquicas em formato xml. app.windows.properties.xml <?xml version="1.0" encoding="ISO-8859-1"?> <gui> <mainmdi> <title>Minha aplicação de prova</title> <dimension> <width>800</width> <height>600</height> </dimension> <state>maximized</state> </mainmdi> <userform> <title>Gestão de Usuários</title> <dimension> <width>800</width> <height>600</height> </dimension> <state>normal</state> </userform> <printer.form> <dimension> <width>320</width> <height>200</height> </dimension> </printer.form> <languages default="Castellano"> <language>Castellano</language> <language>English</language> <language>French</language> </languages> </gui> Agora podemos acessar aos dados da seguinte forma. O exemplo é autodescritivo e está comentado. try { // Lemos os dados de configuração. O arquivo deve estar no mesmo diretório que a aplicação. XMLConfiguration config = new XMLConfiguration("app.windows.properties.xml"); // A seguinte instrução imprimirá: 800 System.out.println(config.getInt("mainmdi.dimension.width")); // A seguinte instrução imprimirá: Minha aplicação de prova System.out.println(config.getString("mainmdi.title")); // A seguinte instrução imprimirá: Castellano System.out.println(config.getString("languages[@default]")); // A seguinte instrução imprimirá: 3 System.out.println(((java.util.List) config.getProperty("languages.language")).size()); // A seguinte instrução imprimirá: French System.out.println(config.getString("languages.language(2)")); // A seguinte instrução imprimirá: 320 // Observe que devido a que o elemento contém um ponto em seu nome // devemos acessá-lo escapando o ponto mediante .. System.out.println(config.getInt("printer..form.dimension.width")); // A seguinte instrução configura o objeto para que salve as propriedades // automaticamente em sua origem (Neste caso um arquivo) quando se atualizarem // ou quando se agregarem novas propriedades config.setAutoSave(true); // Mudamos o jogo de caracteres, pois usaremos propriedades // que precisam de acentos. config.setEncoding("ISO-8859-1"); // Adicionamos duas propriedades // Adicionamos a propriedade 1.0 que descende da raiz config.addProperty("version", "1.0"); // Adicionamos a propriedade Carlos García Pérez que descende da raiz config.addProperty("author", "Carlos García Pérez"); // Não faz falta graças a que está estabelecida a propriedade autoSave estabelecida // config.save(); } catch (ConfigurationException ex){ System.out.println(ex); } Outras Características interessantes Este API também nos dá a possibilidade de que se recarreguem automaticamente os dados de configuração sobre o objeto Configuration no caso de que estes tenham sido modificados. Para habilitar esta característica deverá indicá-lo mediante a seguinte linha de código: config.setReloadingStrategy(new FileChangedReloadingStrategy()); Conclusões Na minha opinião este API é mais completo, potente e flexível que o resto de APIS ou métodos para gerenciar dados de configuração. Embora java.util.prefs proporcione uma funcionalidade e potencia similar a Commons Configurations, os dados de configuração em java.util.prefs só podem ser modificados através de aplicações e não manualmente, pois entre outras coisas não se sabe onde salva realmente este API os dados de configuração. Quando utilizamos objetos Properties para gerenciar as propriedades, devemos realizar conversões de tipos de dados, com este API nos poupamos deste trabalho. Por comentar algo negativo, este API depende de outros subprojetos de Jakarta, por isso devemos incluir seus JARs associados se quisermos usá-lo. Por exemplo, para usar as funções básicas, o API depende de:
Pode-se encontrar mais informações sobre as dependências no seguinte endereço http://jakarta.apache.org/commons/configuration/dependencies.html
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada
Manuais relacionados com este artigo Dentro de Instalação e configuração de Apache Seguinte: 20 truques de segurança para Apache Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em ApacheComentários dos visitantes Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |